За последние 24 часа нас посетили 38695 программистов и 8134 робота. Сейчас ищут 1653 программиста ...

Несколько команд по SSH

Тема в разделе "PHP для новичков", создана пользователем alibek23, 19 июл 2023.

  1. alibek23

    alibek23 Новичок

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