PHP / SSH: несколько команд в одном сеансе (сделать подтверждение)

У меня проблема с PHP и SSH-расширением / Net-SSH-Libary. Я использую его для отправки команд в NetApp-Filer. Поэтому я хочу создать / удалить тома на файлере. Создание томов не проблема.

Но когда я хочу удалить их, податель запрашивает подтверждение («Вы уверены, что хотите удалить .. да / нет»), и я не могу предоставить NetApp эту информацию. Для каждой exec-команды ist начинает новый сеанс.

Можно ли выполнить больше команд в одном сеансе или дать им подтверждение некоторых команд?

Мой код (только удаление тома):

<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('172.22.31.53');
if (!$ssh->login('admin', '12Test')) {
exit('Login Failed');
}

echo $ssh->exec("vol unmount $row->name");
sleep(1);
echo $ssh->exec("vol offline $row->name");
sleep(1);
echo $ssh->exec("vol delete $vol_name \n y");
$loesch = mysqli_query($db, "DELETE FROM volumes WHERE id = '$id'");
header('Location: splash.html');

?>

Заранее спасибо!

Привет

0

Решение

Я вижу несколько возможных решений:

  1. использование \n :

    $ssh->exec("cd mydir\n./script");
    

    Или создайте скрипт с вашими командами, например script.sh и сохраните его в формате UNIX:

    cd mydir
    ./script
    

    затем Exec сценарий:

    $script = file_get_contents("script.sh");
    $ssh->exec($script);
    
  2. Используйте либо ; или && разделить команды.

    ssh2_exec($connection, 'command1 ; command2');   //run both uncondtionally)
    ssh2_exec($connection, 'command1 && command2');  //run command2 only if command1 succeeds
    
  3. использование stream_set_blocking () как это:

    $cmds = [ 'ls', 'ps ux' ];
    $connection = ssh2_connect( '127.0.0.1', 22 );
    ssh2_auth_password( $connection, 'username', 'password' );
    $output = [];
    foreach ($cmds as $cmd) {
    $stream = ssh2_exec( $connection, $cmd );
    stream_set_blocking( $stream, true );
    $stream_out = ssh2_fetch_stream( $stream, SSH2_STREAM_STDIO );
    $output[] = stream_get_contents($stream_out);
    }
    

    Вы найдете все выходные данные в массиве $output,

Ссылка

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector