последовательные команды ssh2 на php 7.2 - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь запустить некоторые команды в удаленном брандмауэре с использованием ssh2 на php 7.2.Ssh-соединение идет нормально, но моя проблема в том, что в fortigate невозможно отправить много команд в одну строку, это означает, что это невозможно "'$ command1'. '&&'. '$ command2 '".есть код, который помогает мне отправлять 3 последовательные команды для того, чтобы в одном сеансе выполнить команду 1, затем команду 2 и, наконец, команду 3?

, это фактически мой код

<?php

 $consulta1 = 'config firewall policy';
 $consulta2 = 'edit 32';
 $consulta3 = 'set status disable';
 $consulta4 = 'end';

$connection = ssh2_connect('192.168.0.100', 22);

ssh2_auth_password($connection, 'user', 'pass');

$ejecucion = "$consulta1 ;  $consulta2";

$stream = ssh2_exec($connection, $ejecucion);

stream_set_blocking($stream, true);

$datos = "";

while($buffer = fread($stream, 4096)){
   $datos .= $buffer . "<br>";
   echo $buffer;
}

fclose($stream);

ssh2_disconnect($connection);

?>

если я отправлю "$ command1". '&&'. '$ command2 '"как команда ssh вернула синтаксическую ошибку.Это потому, что fortigate не поддерживает много команд в одной строке.

1 Ответ

0 голосов
/ 04 июня 2019

Я решаю это с помощью ssh2_shell

 <?php
   $command_capture = "config firewall policy";
   $command_capture1 = "edit 32";
   $command_capture2 = "set status disable";
   $command_capture3 = "end";
  if (!($connection = ssh2_connect("192.168.0.100", 22))) {
    echo "fail: unable to establish connection";
   } 
  if (!ssh2_auth_password($connection, "ebravo", "P0werSW")) {
    echo "fail: unable to authenticate";
   }
  $stream = ssh2_shell($connection);
  fwrite($stream, $command_capture. PHP_EOL);
  sleep(1);
  fwrite($stream, $command_capture1 . PHP_EOL);
  sleep(1);
  fwrite($stream, $command_capture2 . PHP_EOL);
  sleep(1);
  fwrite($stream, $command_capture3 . PHP_EOL);
  sleep(1);
   $data="";
  while($buf = stream_get_contents($stream)){
    $data.=$buf;
  }
   echo $data;
  fclose($stream);
    ?>

Я нашел этот код в другом посте

...