错误时Phpseclib执行不同的命令

时间:2018-06-13 10:44:02

标签: php linux ssh phpseclib

我正在使用Phpseclib 1.0在远程服务器上执行多个命令。我知道如何配置它在出错时退出,但有没有办法设置,如果有错误,它将停止并执行不同的命令?例如,当它全部工作时,我有8个命令可以执行,它不会显示任何输出,所以它一切都很好。如果例如在第4个命令之后它得到错误我需要它停止执行其余命令并执行命令删除它所做的以及另一个命令运行另一个脚本以通知管理员有关事故。我使用的当前代码是

<?php
include('Net/SSH2.php');

ini_set('display_errors', 1);
error_reporting(E_ALL);

$ssh = new Net_SSH2('host');
if (!$ssh->login('user', 'password')) {
    exit('Login Failed');
}
echo '<pre>' .   $ssh->exec('create vlan “TEST”') . '</pre>';
echo '<pre>' .   $ssh->exec('configure vlan TEST tag 666') . '</pre>';
echo '<pre>' .   $ssh->exec('configure vlan TEST add ports 8 untagged') . '</pre>';
echo '<pre>' .   $ssh->exec('create l2vpn vpws TEST fec-id-type pseudo-wire 666') . '</pre>';

// Execute on error
echo '<pre>' .   $ssh->exec('delete l2vpn vpws “TEST”') . '</pre>';
echo '<pre>' .   $ssh->exec('delete vlan “TEST”') . '</pre>';
?>

1 个答案:

答案 0 :(得分:1)

你可以通过$ssh->getStdError()检查stderr并查看它是否为空。还有$ssh->getExitStatus()