1

ローカルエリアネットワークの有線接続で接続されているコンピューターのすべてのMACアドレスの出力を表示できるLinuxでarpコマンドまたはその他のs/wを実行する必要があります。このコマンドは、root から apache を実行する必要があります。したがって、セキュリティ上の懸念も問題です。

迅速な返信をいただければ幸いです。

4

2 に答える 2

1

それを行う 2 つの方法は、php 内で exec() コマンドを使用して、リクエストを直接実行します。

または、Web 側をコマンド側から完全に分離します。

php にコマンド "request" をデータベース テーブルに書き込みます。

データベースから実行するコマンドを要求するbashスクリプト/アプリケーションを実行するcronスクリプトを用意し(指定されたコマンドを実行する場合は、要求が保留されているかどうかを確認してください)、その結果セットをDB。

次に、php Web サイトに出力を表示させます。したがって、次のようになります。

要求 (Web サーバー) > 保留中のデータベース > ジョブが存在するかどうかの cron チェック > ジョブが存在する場合は、要求されたコマンドを実行 > データ データベースを返す > Web サーバーはデータを表示します。

結果が返されたことをエンドクライアントに通知する方法はあなた次第です.iframeまたはajaxチェッククエリを使用して、まだ「表示」されていない結果がデータベースに存在するかどうかを確認することをお勧めします. たとえば、cron ジョブを 60 秒ごとに実行するように設定すると、ユーザーが要求してから実際の結果が返されるまでに 60 秒以上かかることはありません。

于 2013-01-24T13:11:08.467 に答える
0

必要なのは、文字列の操作方法を知ることです!

<?php

exec("mylinuxcmd", $exitVals);

?>

コマンドを実行するには、次を使用します。

ここで、$exitVals は端末出力または「mylinuxcmd」を含む配列であり、出力の各行は配列位置に格納されます!

これは、サーバー IP を取得して画面に出力する例です。

<?php

// exec ifconfig linux command and catch exit on $arr
exec("ifconfig", $arr);



foreach($arr as $ar) {
if(strstr($ar,'inet ')){
        if(!strstr($ar,'127.0.0.1')){

        $a = explode (' ',$ar);
        echo $a[1]."\r\n";
        }
}

}
?>

システムの ifconfig によっては、IP が異なる場所にある可能性があるため、$a[1] は $a[2] などになる可能性があります。

于 2013-01-24T13:15:22.547 に答える