Что нового

Проверка TCP сессии

Skipus

Новичок
Сообщения
2
Репутация
0
Версия AutoIt: 3.
v3.3.14.2

Описание:
Необходимо скрипт для проверки, есть ли ТСР сессия и выполнения условия.

1. Выгружает в файл
2. Смотрит в файл
3. Выполняет условие, если есть нужное соединения, то ничего не делаем, если нет, то перезапускам ПО.

Примечания:

Выгружаю вот таким образом:
Код:
Run(@ComSpec&' /c netstat -an | findstr 10.10.0.10:10 > C:\port.txt', '', @SW_HIDE)


Файл держать открытым не надо, т.к. в него еще другой софт иногда глядит.

Нашёл, вот такой пример, но в нем чего-то не хватает:

Код:
$sPath = @ScriptDir & '\port.txt'; Путь до файла
$hRead = FileOpen($sPath, 0); Открываем файл для чтения
While 1; Цикл для построчного чтения
   $sLine = FileReadLine($hRead); Строка
   If @error = -1 Then ExitLoop; Если конец файла выход из цикла
   If StringInStr($sLine, '&leveldata=') Then MsgBox(0, '', 1); Если найдена фраза в строке, выдать сообщение
   ; Если не выдано ничего, значит строка не найдена
WEnd; Конец цикла


Помогите решить задачку.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & '  /c netstat -an | findstr 10.10.0.10:10', '', @SW_HIDE, 6)
While 1
	$s_Read &= StdoutRead($i_PID)
	If @error Then ExitLoop
	Sleep(1)
WEnd
MsgBox(32,'',$s_Read)
 
Автор
S

Skipus

Новичок
Сообщения
2
Репутация
0
sngr, Поясните пожалуйста, как это работает? К примеру, если отсутствует подключение 10.10.0.10:10, то как указать скрипту выполнить условие:

Код:
#include <File.au3>

While 2
If ProcessExists("Server.exe") Then
Else
	Run("C:\Program Files (x86)\Server\Server.exe")
	_FileWriteLog(@ScriptDir & "\Server.log", "Старт Server.exe")

EndIf
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & '  /c netstat -an | findstr 10.10.10.11:10', '', @SW_HIDE, 6)
While 1
    $s_Read &= StdoutRead($i_PID)
    If @error Then ExitLoop
    Sleep(1)
WEnd
MsgBox(32,'',StringLen($s_Read))
Select
	Case StringLen($s_Read)
		MsgBox(32,'','есть')
	Case Not StringLen($s_Read)
		MsgBox(32,'','не есть')
EndSelect
 
Верх