web-dev-qa-db-ja.com

新しい端末ウィンドウを開いて新しいコンピューターにSSH接続してコマンドを実行するにはどうすればよいですか?

基本的に、さまざまなスレッドとログファイルを監視するために、8台の端末をsshしてプルアップする必要があるコンピューターがあります。ビルドマシンから、これをすべて実行できるスクリプトが欲しいです。たとえば、メッセージキューを監視する場合は、次のようなものを実行します。

gnome-terminal --window-with-profile=NOCLOSEPROFILE -e "ssh root@IP 'watch ipcs'" 

しかし、sshコマンドは適切に実行されないようです。私はこれを数十回繰り返し試してみましたが、運はありません。これが役立つ場合は、次のスクリーンショットをご覧ください。

enter image description here

だから基本的に、これをスクリプトに入れられるもの、あるいはコマンド可能なものにしたいので、IPアドレスと実行するコマンドが与えられたら、そのIPへのssh接続を開く新しいターミナルウィンドウが欲しいコマンドを実行します。

前もって感謝します

**編集これを実行し、上記のコマンドでほとんどのコマンドを実行できるようですが、watchコマンドはsshで機能しないため、おそらく構文上の問題ではありません。 watchがここで機能しない理由があります。

gnome-terminal --window-with-profile=NOCLOSEPROFILE -e 'ssh -X root@$IP "tail -f /home/log/alog.log"'

正常に動作します?

5
zachd1_618

複数のウィンドウを開いて(同じマシンに対して)複数のsshセッションを確立するのではなく、画面を見てください。ホストにsshし、画面を開始し、そこから実行するコマンドごとに1つずつ、複数の仮想コンソールを開くことができます。

画面の本当に素晴らしいところは、ssh接続を失った場合、新しい接続を作成して、実行中の画面セッションに再接続できることです。本当にかっこいいです。 tmuxもありますが、これは同様のプログラムです(異なるLinuxでどのように利用可能かはわかりません)。

参照: http://en.wikipedia.org/wiki/GNU_Screen

1
pcm

Ttyを必要とする対話型コマンドを実行しようとしていますが、デフォルトでは、リモートマシンで実行するコマンドを指定したときにsshはttyを割り当てません。 -tフラグを追加して、ttyの割り当てを強制します。

1
psusi