• ベストアンサー

別のサーバーでコマンドを実行するには

echo exec('whoami'); という風にexecでコマンドを実行して戻り値を表示するプログラムがあります、これを別のサーバーで実行して戻り値を出力したいのですが方法はないでしょうか? Aサーバー(コマンド) → Bサーバー(実行) Aサーバー(出力) ← Bサーバー(戻り値) といった具合です、postかgetで置くってリダイレクトするような方法しかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

Bサーバへリモートログインするアクセス権があるならPHPのSSH2関数を使ってはどうでしょう。

参考URL:
http://www.php.net/manual/ja/book.ssh2.php

その他の回答 (2)

回答No.3

・サーバー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)
回答No.1

それはクラッキング行為であり、ここで公開されるものではありません。 ちなみに、どうもWeb上での行為について固執しているようですが、それができるということは、ブラウザ側のウィークポイントをつく行為であり犯罪です。 信頼性を結んだサーバー間であれば簡単な事です。通常サーバー間であれば、ソケットを使うべきだ出し、プロセス間通信など、Soapを使えばできます(そのためにある)。 PHPなど原始的な物であれば、コマンドレベルで事足ります。telnet , rlogin, ですね。 なお、Webサーバーの返す変数に、ユーザー情報は格納されているので、それで取得は可能です。しかし、相手がブラウザで、そのページを開かないと、当然無理です。 上記を総合すれば、前提条件が希薄で、回答しようがないということです。