首页 > 解决方案 > 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>';
?>

标签: phplinuxsshphpseclib

解决方案


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


推荐阅读