0

私はすでに ssh2-connect を使用してリモートサーバーに接続しており、ssh2 _exec を使用してこのコマンドを実行して"sshpass -p 'xxxx1248' ssh XX@1x2.1xx.3x.xx "います。新しいリモートサーバーに接続した場合、シェルにアクセスしたいと思います。2番目のリモートサーバーでコマンドを実行するタスクがあります。どうすればいいですか??

$connection = ssh2_connect($sIP, $iPort);

$autherised = ssh2_auth_password($connection, $sUserName, $sPassword);
$oResult = ssh2_exec($connection, "sshpass -p 'xxxx1248' ssh XX@1x2.1xx.3x.xx");

IP のシェルにアクセスする方法1x2.1xx.3x.xx

誰かが以前にこれを行ったことがある場合は、これを解決してください....

4

1 に答える 1

0

ターゲット マシンで「ls」コマンドを実行するコード スニペットを提供します。これがあなたが望むものかどうか私に知らせてください。

$conn = ssh2_connect($host, $port);
ssh2_auth_password($conn, $user, $pass);
// runs the ls -al command on $targetHost
$stream = ssh2_exec($conn,
    "sshpass -p '{$passTarget}' ssh $targetUser@$targetHost ls -al"
);

// retrieving the data
stream_set_blocking($stream, true);
$output = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);

echo stream_get_contents($output);

このコードは、マシン上のディレクトリ リストを出力します$targetHost

これが役立つことを願っています。

編集:

ここに例を追加します。

ターゲット マシンで、小さな bash スクリプトを作成しましたtest.sh

export TEST_VAR=1

次に、ssh2_exec行を次のように変更しました。

$stream = ssh2_exec($conn,
    "sshpass -p '{$passTarget}' ssh $targetUser@$targetHost 'source test.sh; echo \$TEST_VAR'"
);

期待される結果が得られます:1

于 2016-06-29T13:15:02.993 に答える