複数のアクティブシェルで同時にコマンドを実行する

複数のアクティブシェルで同時にコマンドを実行する

私はtmux環境を使用しており、同じコマンドライン引数を使用して4つの異なるウィンドウ(図の最初の4つ)で同じPythonスクリプトを実行する必要があることがよくあります。 1つのシェルでコマンドを実行して各シェルでスクリプトを実行する方法はありますか?

私はこの事実を知っています議論するしかし、彼らは他のターミナル環境を使うことを提案し、私はtmuxまたはシェルスクリプトを使ってできることを探しています。

Tmuxセッション

4つの異なるシェルは、4つの異なる仮想マシンへのSSHセッションです。

答え1

ツールは必要ありません。tmuxこれを処理できます。

ウィンドウを開き、SSHを介して各サーバーに接続し、次の手順を実行しますCtrlB

:setw synchronize-panes 

すべての入力は、表示されるすべてのウィンドウに同期されます。
このコマンドを再入力するか、コマンドに「off」を追加して終了します。

答え2

はい、可能です。 ttyechoというツールを使用すると、さまざまな端末でユーザーの対話をシミュレートできます。

ダウンロードとインストール:

wget http://www.resulinux.tk/utils/ttyecho.c -O ttyecho.c
gcc ttyecho.c -o /usr/bin/ttyecho

それでは、psコマンドに示されているように、xtermをユーザーjohnとして使用して、pts / 17のloggegなどの他の端末で操作を実行しましょう。

ps aux | grep john 
john   9198  0.0  0.0  23836  4524 pts/17   Ss   Jul21   0:00 /bin/bash

それではviを開き、別の端末にテキストを入力してみましょう。

ttyecho -n /dev/pts/17 vi (executed vi command on the other terminal) 
ttyecho  /dev/pts/17 i (entered in insertion mode)
ttyecho -n /dev/pts/17 some text  

Johnがログインしている端末を見ると、実際にviが実行されていることがわかり、そこに入力したテキストが「some text」であることがわかります。これで他の端末セッションを完全に制御できるようになりました。

複数のSSHセッションでコマンドを実行する

SSH ptsデバイスを確認してください。

ps aux | grep ssh

root      3540  0.0  0.0  44924  5764 pts/1    S+   14:46   0:00 ssh [email protected]
root      5907  0.0  0.0  44924  5684 pts/17   S+   12:51   0:00 ssh [email protected]
root      8074  0.0  0.0  51216  3948 pts/6    S+   Jul26   0:01 ssh [email protected]

したがって、192.168.2.77にログインしたSSHでコマンドを実行するには、次のものが必要です。

ttyecho -n /dev/pts/6 ls

そして、lsコマンドは単一のスクリプトで実際にリモートで実行されます!

答え3

Clustershが面白いかもしれません。

ここに画像の説明を入力してください。

dshも試してみてください。 https://www.linuxhelp.com/how-to-use-dsh-to-run-linux-commands-in-multiple-machines/

関連情報