2011-01-17 13 views
0

次のPHPスクリプトはps -efのような単純なLinuxコマンドで動作しますが、./dstat -t -aを使用するとハングしてしまいますプロンプトがローカルマシンに戻ってきます。すべてのコマンドはリモートホスト上のsshで実行されることを覚えておいてください:

<?php 
$target = time() . '_' . 'txt'; 

if($ssh = ssh2_connect('10.1.0.174', 22)) { 
    if(ssh2_auth_password($ssh, 'root', 'kmoon77')) { 
     //$stream = ssh2_exec($ssh, 'whoami'); 
     $sCommand = 'dstat -a'; 
     //$sCommand = 'ps -ef'; 
     $stream = ssh2_exec($ssh, $sCommand); 
     //$stream = ssh2_exec($ssh, 'pwd'); 
     stream_set_blocking($stream, true); 
     $data = ''; 
     while($buffer = fread($stream, 4096)) { 
      $data .= $buffer; 
     } 
     //fclose($stream); 
     echo $data; // user 
    } 
} 
?> 
+0

「dstat」が無期限に実行されるという問題がありますか? – mario

+0

Mario、それは明らかに問題でしたが、私を逃れました。小さなサンプルとして以下のコマンドを使用しました:$ sCommand = "cd /root/dstat-0.7.2; ./dstat -cdngy 5 3 >> test。 TXT";使用できることに注意してください。複数のコマンドを持つこと。 – kamal

答えて

0

rootのパスワードを投稿してくれてありがとう。

いいえこれは内部amazon ipはありません?

しかし、問題は、スクリプトが単に実行している(またはむしろコマンド)ことがあります。

fpassthru("ssh -i keyfile -l login name myserver.com dstat -a");のようなものを試してみてください。

+0

は実際のルートパスワードではなく、IPは内部IPであり、Amazonや商用サイトとは関係ありません:)。しかし、チップのおかげで – kamal

関連する問題