php - 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>';
?>
解决方案
您可以通过查看 stderr$ssh->getStdError()
是否为空来检查它。还有$ssh->getExitStatus()
。
推荐阅读
- reactjs - 使用 .net 核心反应模板修改 oidc-client 的登录/登录 UI
- sql - 当第二个表中不存在或具有空值时,从 2 个表中获取数据
- ios - 使用 iPhone 或 iPad,如何访问由 FileManager.default.createDirectory(...) 创建的文件夹?
- java - 我该怎么做?
- python - Buildozer 错误 - `跳过链接:没有轮子的标签匹配`
- css - 如何让 gulp-sass 编译引导 CSS 定义,而不仅仅是输出 import 语句?
- python - 如何过滤连续几个月的某些值?
- javascript - Odoo 13:错误 Js“找不到客户端操作”
- logging - 如何设置 CUPS 以记录我打印了多少页?
- python - 成功部署 Django 后应用程序错误