Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Net_SSH2-exec()如何获取命令返回代码_Php_Ssh_Exec_Phpseclib - Fatal编程技术网

PHP Net_SSH2-exec()如何获取命令返回代码

PHP Net_SSH2-exec()如何获取命令返回代码,php,ssh,exec,phpseclib,Php,Ssh,Exec,Phpseclib,如何获取已执行命令的返回代码: <?php include('Net/SSH2.php'); $ssh = new Net_SSH2('www.domain.tld'); if (!$ssh->login('username', 'password')) { exit('Login Failed'); } echo $ssh->exec('cat /tmp/file_tmp'); //verify the return code echo $ssh->exec

如何获取已执行命令的返回代码:

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

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('cat /tmp/file_tmp');
//verify the return code
echo $ssh->exec('echo $?');

?>

echo$?
(Linux)和
echo%errorlevel%
(Win)不起作用


有什么想法吗?

你想做什么就做什么?

你想做什么就做什么?

找到了一个选项(解决方法)。

以下代码适用于我,符合我的目的:

$command .= ';echo "[return_code:$?]"';
$output = $ssh->exec($command);
preg_match( '/\[return_code:(.*?)\]/', $output, $match );
$return_code = $match[1];
echo "\r\n". $output;
echo "\r\n".$return_code;
感谢大家的投入。谢谢你

找到了一个选项(解决方法)。

以下代码适用于我,符合我的目的:

$command .= ';echo "[return_code:$?]"';
$output = $ssh->exec($command);
preg_match( '/\[return_code:(.*?)\]/', $output, $match );
$return_code = $match[1];
echo "\r\n". $output;
echo "\r\n".$return_code;


感谢大家的投入。谢谢你

你试过预先编写
2>&1
吗?这方面我是新手。我不知道如何使用
2>&1
。您的/tmp/file\u tmp是否正确记录了您的报税表?是空的吗?如果没有,请发送它的内容。它不存在。我期待错误代码。输出为
cat:cannot open/tmp/file\u tmp
2>&1
将stderr重定向到stdout。它没有给你“返回码”。你有没有试过预先写
2>&1
?我对这一点不熟悉。我不知道如何使用
2>&1
。您的/tmp/file\u tmp是否正确记录了您的报税表?是空的吗?如果没有,请发送它的内容。它不存在。我期待错误代码。输出为
cat:cannot open/tmp/file\u tmp
2>&1
将stderr重定向到stdout。它没有给出“返回码”,而是给出ssh Exec的退出码。是否执行了命令。这并不表示命令的退出代码,似乎它实际上返回了最后执行的命令的退出代码,这给出了ssh Exec的退出代码。是否执行了命令。这并不表示命令退出代码。似乎它实际上返回了上一个执行命令的退出代码,对于windows,我将其组合为:
(your_command.exe&&IF ERRORLEVEL 0 echo pass)| echo fail
,即使其他答案正确(有$ssh->getExisStatus()方法),在Laravel中,我使用的方法无法访问,因此您的答案解决了我的问题。谢谢!:)对于windows,我将以下内容组合在一起:
(您的_command.exe&&IF ERRORLEVEL 0 echo pass)| | echo fail
,即使另一个答案是正确的(有$ssh->getExisStatus()方法),在Laravel中,我使用的方法是不可访问的,因此您的答案解决了我的问题。谢谢!:)