Я пытаюсь выполнить команду SSH для устройства (брандмауэра). Команда выполняется, когда длина короткая. При длине около 1000 символов команда не выполняется.
Когда я выполняю команду через замазку, это тоже работает.
Прочитав несколько решений, я попытался установить тайм-аут на 5 секунд. Все равно никакой помощи.
В журналах устройства я вижу вход и выход SSH. Но никакой активности.
Я использую phpseclib ssh версии 2.0.
$ssh = new SSH2(ip_address);
$ssh->login($user, $password);
$ssh->write($command);
$ssh->setTimeout(5);
$ssh->read()
$ssh->setTimeout(0);
- person Ash-b   schedule 11.03.2019define('NET_SSH2_LOGGING', 2);
вверху, а затемecho $ssh->getLog();
после$ssh->read();
. Кроме того, мне интересно, может быть, для вас будет лучше, если вы поместите эту длинную команду в сценарий оболочки, а затем вызовете сценарий оболочки. Я имею в виду, что это звучит так, как будто это должно работать, не находясь внутри сценария оболочки, но это того стоит! - person neubert   schedule 12.03.2019$command
, но это очень актуально. Журналы покажут это и многое другое. Я бы предпочел журналы, но в противном случае$command
тоже было бы неплохо. Если вы не можете предоставить ни один из них, то я боюсь сказать, что единственный человек, который сможет вам помочь, - это вы сами, и я проголосую за закрытие этого вопроса. - person neubert   schedule 12.03.2019FW1-AMSTERDAM #
. idk, что вы ожидаете назад, но я думаю, что это еще не все. Без команды это действительно игра в угадайку, но есть одна вещь, которую стоит попробовать: не отправляйте команду одним большим гигантом$ssh->write()
, а вместо этого отправляйте ее по одному символу за раз. например.for ($i = 0; $i < strlen($command); $i++) $ssh->write($command[$i]);
. Это больше похоже на то, что делает PuTTY. Трудно точно знать, что делает клиент OpenSSH, потому что их клиент не создает журналы, как это делает PuTTY. - person neubert   schedule 12.03.2019