- ベストアンサー
別のサーバーでコマンドを実行するには
echo exec('whoami'); という風にexecでコマンドを実行して戻り値を表示するプログラムがあります、これを別のサーバーで実行して戻り値を出力したいのですが方法はないでしょうか? Aサーバー(コマンド) → Bサーバー(実行) Aサーバー(出力) ← Bサーバー(戻り値) といった具合です、postかgetで置くってリダイレクトするような方法しかないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Bサーバへリモートログインするアクセス権があるならPHPのSSH2関数を使ってはどうでしょう。
その他の回答 (2)
- superside0
- ベストアンサー率64% (461/711)
・サーバーAが戻すHTMLにサーバーBへのactionを埋め込む(インラインフレームとか、カウンター的な画像表示とか) ・サーバーB上に、コマンド実行するPHPを設置して、サーバーAからfile_get_contents()などでサーバBをhttpでアクセスすることで、コマンド起動 ・(#2さんの言われるように) サーバーB上で、サーバーAからssh接続できるようにポートを開けて、アカウントを作っておいてから PHPからssh2_connect() ssh2_auth_password(),して ssh2_exec()でコマンド実行。 ・サーバーB上の特定ユーザーの~/.forward(ないしは~/.qmailやエイリアス)で、コマンド実行を定義しておいて 必要時に、サーバーBのそのアカウントにメールを送る。 ・RPCを構築する(SOAPとか) 思いつきですが・・・
- 0909union
- ベストアンサー率39% (325/818)
それはクラッキング行為であり、ここで公開されるものではありません。 ちなみに、どうもWeb上での行為について固執しているようですが、それができるということは、ブラウザ側のウィークポイントをつく行為であり犯罪です。 信頼性を結んだサーバー間であれば簡単な事です。通常サーバー間であれば、ソケットを使うべきだ出し、プロセス間通信など、Soapを使えばできます(そのためにある)。 PHPなど原始的な物であれば、コマンドレベルで事足ります。telnet , rlogin, ですね。 なお、Webサーバーの返す変数に、ユーザー情報は格納されているので、それで取得は可能です。しかし、相手がブラウザで、そのページを開かないと、当然無理です。 上記を総合すれば、前提条件が希薄で、回答しようがないということです。