2013-08-16 4 views
1

가 어떻게 실행되는 명령에 대한 리턴 코드 얻을 수있는 명령의 리턴 코드 얻는 간부() :PHP Net_SSH2 - 어떻게

<?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 $? (리눅스)와 echo %errorlevel% (승리)를 작동하지 않습니다 .

모든 아이디어 ??

+0

'2> & 1'을 (를) 앞에 추가 했습니까? –

+0

나는 이것에 관해 새로운 사람이다. 나는'2> & 1'을 어떻게 사용할 수 있는지 모른다. –

+0

/tmp/file_tmp가 반품을 올바르게 기록합니까? 그것은 비어 있습니까? 그렇지 않다면 그 내용을 보낼 수 있습니다 –

답변

1

찾을 수있는 옵션 (해결 방법). 사용자의 입력에 대한

$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; 

모두에게 감사 : 아래의 코드는 나를 위해 일한 PHP ssh2_exec channel exit status?

, 내 목적을 제공합니다. 고맙습니다 !!

+0

을 반환합니다. 나는 다음과 같이 작성했습니다.'(your_command.exe && IF ERRORLEVEL 0 echo pass) || echo fail' –

+0

다른 답변이 맞다하더라도 ($ ssh-> getExisStatus() 메소드가 있습니다), Laravel에서 메소드를 사용할 수 없기 때문에 내 문제가 해결되었습니다. 감사! :) –

2

$ssh->getExitStatus() 당신이 원하는 것은 무엇입니까?

+0

이것은 ssh Exec의 종료 코드를 제공합니다. 명령이 실행되었는지 여부. 이것은 명령 종료 코드를 나타내지 않습니다. –

+1

그것은 실제로 마지막으로 실행 된 명령의 종료 코드 인 Windows 용 –