GNU/Linux >> Linux の 問題 >  >> Linux

HTTPサーバー経由でシェルコマンドを実行する方法

今日は、 "shell2http"と呼ばれる面白くて便利なユーティリティについて説明します。 これは、httpサーバーを介してシェルコマンドを実行するために使用できます。 Linuxボックスで任意のコマンドを実行し、ローカルネットワーク上の同僚または友人に出力を送信してそれらを確認できます。 S/HeはWebブラウザで出力を表示できます。このツールは、友達にSSHアクセスを許可したくない場合に役立つことがあります。表示したいコマンドの出力を尋ねて、ローカルシステムでそのコマンドを実行し、ローカルネットワーク上のどこからでもWebブラウザで表示できるようにします。友達は、出力の結果を表示するためにSSHアクセスを必要としません。

ダウンロード -無料ガイド:「Linuxカーネルモジュールプログラミングガイド」

shell2http-HTTPサーバー経由でシェルコマンドを実行

shell2httpは、使用するディストリビューションに応じて、次のリンクからダウンロードできます。 GNU / Linux、Windows、およびMacOSXをサポートします。

  • shell2httpをダウンロード

または、次のコマンドを実行して、ターミナルからダウンロードします。

コマンドラインダウンローダーwgetがインストールされていることを確認してください および圧縮ツール解凍

RPMベースのシステムでは、rootユーザーとして次のコマンドを実行してインストールします。

$ yum install wget unzip

DEBベースのシステムでは、次を実行します。

$ sudo apt-get install wget unzip

64ビットshell2httpをダウンロードするには:

$ wget https://github.com/msoap/shell2http/releases/download/1.7/shell2http-1.7.linux.amd64.zip

32ビットシェルをダウンロードするにはhttp:

$ wget https://github.com/msoap/shell2http/releases/download/1.7/shell2http-1.7.linux.386.zip

圧縮ファイルを任意の場所に抽出します。

$ unzip shell2http-1.7.linux.xxx.zip

解凍したフォルダに移動し、shell2httpの使用を開始します。

友人が、インストールされているLinuxカーネルバージョンのシステムを表示したいとします。

これを行うには、次を実行します:

$ shell2http -host 192.168.1.150 -port 8080 /kernel "uname -r"

ここでは、 192.168.1.150 ローカルシステムのIPアドレスです。 8080 ポート番号です。 /カーネル -は、コマンドの出力を表示するためのパスです。そして"uname-r" システムのカーネルバージョンを表示するコマンドです。

出力例:

2017/02/03 14:57:21 register: /kernel (uname -r)
2017/02/03 14:57:21 listen http://192.168.1.150:8080/

おそらく、ファイアウォールまたはルーターのポート「8080」を開く必要があります。 Firewalldを使用するシステム(RHEL、CentOSなど)では、rootユーザーとして次のコマンドを実行してポート8080を開きます。

# firewall-cmd --add-port=8080/tcp --permanent

コマンドを使用してfirewalldサービスを再起動します:

# firewall-cmd --reload

DebianおよびUbuntuシステムでは、次を実行します:

$ sudo ufw allow 8080

ポート8080が他のアプリケーションで使用されていないことを確認してください。そうである場合は、コマンドで別のポートに言及し、ファイアウォール経由でもそのポートを許可します。

次に、友達にWebブラウザを開いて、 "http:// IP-address:8080 / kernel"を指すように指示します。 または"http:// hostname:8080 / kernel" 。とても簡単です。

出力例:

友人がディスク使用量を分析したい場合は、ローカルシステムで次のコマンドを実行するだけです。

$ shell2http -host 192.168.1.150 -port 8080 /diskusage "du -h"

そして、パスを開くように彼に依頼します- http:// IP-address:8080 / diskusage 彼のウェブブラウザで。

コマンドを終了するには、 CTRL + Cを押します。 。

とても便利ですね。もちろんです!

次のように、2つのコマンドを組み合わせて、出力を友達に送信することもできます。

以下の例では、 duを実行します およびps コマンドを実行し、出力をhttpサーバーに送信します。

$ shell2http /diskspace "df -h" /ps "ps aux"2017/02/03 15:09:34 register: /diskspace (df -h)

出力例:

2017/02/03 15:09:34 register: /ps (ps aux)
2017/02/03 15:09:34 listen http://:8080/

上記のコマンドに気づきましたか?システムのIPアドレスについては触れませんでした。 shell2httpは、IPアドレスやホスト名についても言及しなくても機能します。

これで、友達はURLからディスクスペースの出力を表示できます- http:// IP-address:8080 / diskspace 、URLを使用して「ps」コマンドの出力を表示します- http:// IP-address:8080 / ps

ディスクスペース出力:

PSコマンド出力:

免責事項: 信頼できるネットワーク内でのみ、shell2httpツールを注意して使用してください。必要な予防措置を講じなかった場合、サーバーが簡単に危険にさらされる可能性があります。


Linux
  1. シェルのコマンド出力から最初/最後の「n」行を削除するにはどうすればよいですか?

  2. OSに基づいてBashコマンドを実行するために1つのVimコマンドをマップする方法は?

  3. Cat、Tac、More、Less の使用方法 – Linux コマンド

  1. PHP を介してリモート マシンでコマンドを実行する

  2. laravelコントローラーから外部シェルコマンドを実行するには?

  3. docker でのコマンド出力のリダイレクト

  1. 履歴に保存せずにシェルでコマンドを実行するにはどうすればよいですか? [Linuxのヒント]

  2. コマンドの出力をシェル変数に割り当てる方法は?

  3. コマンドまたはシェルスクリプトの出力がStdoutまたはStderrであるかどうかを確認する方法は?