11

私の環境の背景を説明するには:

私は3台のマシンA、B、Cを持っています

A = ウェブサーバー。基本的に B & C のインターフェースとして機能する php ウェブサイトを実行

B = Linux Ubuntu マシン。ルート アクセス権、SSH、および SSH クライアント経由でマシン上で動作するために必要なすべての機能があります (このサーバー用の .ppk 秘密鍵ファイルがあります)。

C = Linux で実行されている MySql データベース サーバー

C (Mysql) で A (php) からのクエリを正常に実行し、結果を返すことができます。しかし今、A から B で Linux コマンドを実行しようとしています。

例えば。

B で実行されているスクリプトがあり、スクリプトのステータスを表示するために A (php) からコマンドを実行したいと考えています。

コマンドラインでこれを行うのは簡単です - ./SomeScript status

しかし、サーバーAでホストしているWebサイトでこのスクリプトのステータスを表示したい.

サーバーAでサーバーBの稼働時間を確認するだけでも.

とにかくこれは可能ですか?これはこのネットワークへの外部アクセスのない閉じたネットワークであるため、接続が安全であるかどうかにかかわらず、私はあまり段階的ではありません。

どんなアドバイスでも大歓迎です。

ありがとう

4

3 に答える 3

12

サーバー A の PHP を介してサーバー B に対して SSH コマンドを実行します。

Linux のコマンド ラインで ssh コマンドを実行する方法は次のとおりです: http://www.youtube.com/watch?NR=1&feature=fvwp&v=YLqqdQZHzsU

Linux で PHP を使用してコマンドを実行するには、exec()コマンドを使用します。

これがあなたが正しい方向を見始めるきっかけになることを願っています。

パスワード プロンプトの自動化については、これら 2 つの投稿を参照してください。

考えさせられるように、動作しないコードの簡単な例を次に示します。

<?php

    $server = "serverB.example.org";
    //ip address will work too i.e. 192.168.254.254 just make sure this is your public ip address not private as is the example

    //specify your username
    $username = "root";

    //select port to use for SSH
    $port = "22";

    //command that will be run on server B
    $command = "uptime";

    //form full command with ssh and command, you will need to use links above for auto authentication help
    $cmd_string = "ssh -p ".$port." ".$username."@".$server." ".$command;

    //this will run the above command on server A (localhost of the php file)
    exec($cmd_string, $output);

    //return the output to the browser
    //This will output the uptime for server B on page on server A
    echo '<pre>';
    print_r($output);
    echo '</pre>';
?>

推奨されるフローは、サーバー A でコマンドを実行して、サーバー B に SSH 接続することです。

于 2013-06-10T17:17:52.210 に答える