Что нового

Данные, строки Plink получить приветствие.[Решена]

Glass4217

Знающий
Сообщения
83
Репутация
10
Здравствуйте, есть задача, при подключении на рабочую станцию с Linux получить "приветствие" операционной системы.
и уже отталкиваясь от того какая операционная система стоит ubuntu или debian будет выполнятся определенные команды.
вариант 1
Код:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-201-generic i686)
вариант 2
Код:
Linux yozh 4.19.0-10-686-pae #1 SMP Debian 4.19.132-1 (2020-07-24) i686
собственно само подключение и отправка команд я делать научился.
пытался с помощью StderrRead и StdoutRead , но никак не могу получить ответ.
 
Автор
Glass4217

Glass4217

Знающий
Сообщения
83
Репутация
10
так, но видимо я что-то упустил.
Код:
$command = Run("C:\Program Files (x86)\PuTTY\plink.exe -ssh -pw "&$password&" "& $host &" -l "&$user, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Sleep(15000)
ConsoleWrite("тестируем чтение"&@CRLF)
$data = StderrRead ($command,20)
$data2 = StdoutRead ($command,20)
ConsoleWrite($data & "попытка раз"&@CRLF)
ConsoleWrite($data2 & "попытка два"&@CRLF)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,621
Репутация
2,441
видимо я что-то упустил
Да, этап чтения справки.
Код:
;Вариант 1 (ожидаем полное завершение процесса)
$iPID = Run("C:\Program Files (x86)\PuTTY\plink.exe -ssh -pw " & $password & " " & $host & " -l " & $user, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($iPID)
ConsoleWrite(StdoutRead($iPID) & @CRLF)

;Вариант 2 (пока процесс активен читаем данные)
$iPID = Run("C:\Program Files (x86)\PuTTY\plink.exe -ssh -pw " & $password & " " & $host & " -l " & $user, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

$sRead = ''

While ProcessExists($iPID)
    $sStdOut = StdoutRead($iPID)
    If @error Then ExitLoop
    
    If $sStdOut Then
        $sRead &= $sStdOut
        ConsoleWrite($sStdOut & @CRLF)
    EndIf
WEnd
 
Автор
Glass4217

Glass4217

Знающий
Сообщения
83
Репутация
10
Так моя ошибка в том, что я исключил цикл во время чтения потока?
Думал будет достаточно довольно продолжительной паузы перед чтением, а вон оно как. Завтра попробую.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,621
Репутация
2,441
ошибка в том, что я исключил цикл во время чтения потока?
Не так цикл, как ожидание завершения процесса.
Плюс неверное использование функции StderrRead/StdoutRead, там второй параметр почему то 20, это откуда?
 
Автор
Glass4217

Glass4217

Знающий
Сообщения
83
Репутация
10
там второй параметр почему то 20
из оффлайн справки с офф сайта.

Функция StdoutRead
Прочесть указанное число символов из STDOUT потока ранее запущенного дочернего процесса.

StdoutRead ( process_id[, count[, peek = false]] )

Параметры

process_idИдентификатор дочернего процесса ID, полученный после вызова Run.
countКоличество символов.
peekЕсли true, то прочтенные символы из канала не удаляются.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,621
Репутация
2,441
Автор
Glass4217

Glass4217

Знающий
Сообщения
83
Репутация
10
о версия AutoIt устарела.
Да это я видел, но не сталкивался еще с разночтением функционала, отныне буду проверять.
при нажатии на функцию в коде
пользуюсь онлайн справкой, но когда не всегда есть доступ к сети, потому верил оффлайн-справке.

как итог, у меня получилось получить "ответ-приветствие", всех благодарю.
 
Верх