alibek23
Новичок
Приветствую.
Есть скрипт, который подключается к оборудованию (маршрутизатор Cisco) и отправляет на него некоторые команды по SSH. Количество команд обычно несколько десятков, может быть сотен.
Сделал так:
Но с таким кодом выполняется только первая команда, для остальных выдается ошибка "ssh2_exec(): Unable to request a channel from remote host".
Если ssh-подключение засунуть внутрь цикла, то на второй и последующих командах выдается ошибка "Failure 'transport read' (-43)", даже если делать паузу в несколько секунд.
Примеры из описания функции ssh2_exec (точнее из комментариев) я проверял, именно из них я и взял синхронный режим для потока, но не помогло.
Не подскажите, как несколько команд запускать правильно?
Есть скрипт, который подключается к оборудованию (маршрутизатор Cisco) и отправляет на него некоторые команды по SSH. Количество команд обычно несколько десятков, может быть сотен.
Сделал так:
Код:
$ssh = ssh2_connect('1.2.3.4', 22);
ssh2_auth_password($ssh, 'user', 'password');
foreach ($cmds as $cmd)
{
print $cmd;
$tmp = ssh2_exec($ssh, $cmd);
stream_set_blocking($tmp, true);
ssh2_fetch_stream($tmp, SSH2_STREAM_STDIO);
if ($tmp === false) {
print " !failed\n";
}
print "\n";
};
ssh2_disconnect($ssh);
Если ssh-подключение засунуть внутрь цикла, то на второй и последующих командах выдается ошибка "Failure 'transport read' (-43)", даже если делать паузу в несколько секунд.
Примеры из описания функции ssh2_exec (точнее из комментариев) я проверял, именно из них я и взял синхронный режим для потока, но не помогло.
Не подскажите, как несколько команд запускать правильно?