2017-05-29 14 views
0

私はVMware vsphere client v5.5を使用しています。私は、基本的にコマンド "lscpu"を使ってシステムに関する情報を与えるシンプルなシェルスクリプトを開発しました。私は2つのVMを持っていると仮定して、両方のVMのRHEL 6.5がインストールされている。私がVM1にログインしていて、シェルスクリプトがこのVM1に存在するとしたら、VM2に関する情報が必要です。このシェルスクリプトファイルをVM2からVM1から実行し、VM1の結果を取得したいのですが、どうすればいいですか?私が知った一つのアイデアはsshを使っていましたが、私はそれについてあまりよく分かりません。別のlinux vmの1つのlinux vmにあるシェルスクリプトの実行方法

+0

sshは良い方法です。 「sshを使ってリモートコマンドを実行する」ことについてグーグルで試してみてください。多くの例があります。 – gile

答えて

0

これはVMでのみ実行されるため(セキュリティは問題ではないと思われます)、接続をリッスンする単純なTCPサーバーをVM2にセットアップして、VM1に接続するnetcatクライアントを設定できます。サーバーを起動し、スクリプトを実行して結果を取得します。

これは簡単にxinetdの助けを借りて達成することができます。

まず、xinetdをインストールする必要があります。あなたがUbuntuのかUbuntuのベースのディストリビューションを実行している場合:

sudo apt install xinetd 

あなたのスクリプトを実行するためにxinetdを設定する必要があります。この特定のガイドをsetting up xinetdで参照して、サーバーを構成することを強くお勧めします。

デフォルトの設定をそのまま使用できます。

service myscript 
{ 
    type   = UNLISTED 
    socket_type  = stream 
    wait   = no 
    user   = username 
    group   = groupname 
    server   = /path/to/your/script.sh 
    log_on_failure += USERID HOST 
    disable   = no 
    port   = 1593 
} 

ただ、それに応じてusergroupserver(あなたのシェルスクリプトへのパス)とportフィールドを編集し、あなたが行くように設定されています。

サーバーが起動したら、あなたはVM1で次のように実行することにより、VM2でスクリプトを実行することができ、

netcat $vm2_ip $port 

これはVM2でスクリプトを実行し、VM1で結果が表示されます。

0

あなたは他のVMよりも簡単にsshを実行できます。

ssh [email protected]

は、パスワードを入力するか、またはあなたがそのターミナルと同じようにあなたがVM2上で任意のコマンドを実行することができ、ここから最初の文で

sshpass -p password ssh [email protected]

それを提供することができます。

catなどを少し探せば、さらに多くのことができます。

0

ここでは2つの異なる質問、実際にあります。

  1. は、リモートからコマンドを実行する方法?

    sshは道のりであることを説明する他にもたくさんの回答があります。私は、スクリプトから実行したいときに、パスワードを要求するのを避けるために、非対称キーでsshを設定する必要があるという精度を追加するだけです。ターゲットVMでルート特権が必要な場合は、指定されたユーザーがパスワードなしでsudoにアクセスできるように特殊なsudo構成を構築する必要があります。

  2. リモートVM上でコマンドをアクセス可能にする方法は?

    あなたは、ローカルVM上のスクリプトを読んで、その行をsshを通してリモートのものに渡すことができます。しかし、多くのリモート管理を行いたい場合は、共有ファイルシステムを設定することもできます。 NFS、AFSを使用することも、共通のホスト・フォルダを共有することもできます。これにより、管理スクリプトの管理ポイントが1つだけで、すべてのVMから明示的にアクセスできるようになります。

関連する問題