【问题标题】:Phpseclib on error execute different commandPhpseclib 出错时执行不同的命令
【发布时间】:2018-11-22 21:59:54
【问题描述】:

我正在使用 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>';
?>

【问题讨论】:

  • 请添加一些代码来重现您的问题。
  • 你有非常奇怪的引号“...”,不确定它们是否真的有效。

标签: php linux ssh phpseclib


【解决方案1】:

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

【讨论】:

  • 这是我在 phpseclib 网站上读到的,但我不确定如何在其中一个命令返回错误而不是继续执行命令时执行不同的命令。我知道我可以使用set -e,但如果出错它会停止整个事情。
  • @George - 这样的事情怎么样?:pastebin.com/BBj2gUAX
  • 我已经使用了不同的解决方案,想检查你的但它给出了错误PHP Parse error: syntax error, unexpected 'return' (T_RETURN) in testnew.php on line 16
  • @George - if (strlen($ssh-&gt;getStdError()) { 应该有一个额外的结束。括号。也就是说......如果我可能会问,你编程/做 PHP 多久了?知道这一点会让我更好地了解我是否可以为您指明正确的方向,或者我是否需要全力以赴,只需为您编写无语法的代码。为您指明正确的方向对我来说当然是更少的努力,但如果这对您也不太有用,那么知道这一点会很好。
猜你喜欢
  • 2019-08-01
  • 1970-01-01
  • 2018-05-12
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多