私はtmux環境を使用しており、同じコマンドライン引数を使用して4つの異なるウィンドウ(図の最初の4つ)で同じPythonスクリプトを実行する必要があることがよくあります。 1つのシェルでコマンドを実行して各シェルでスクリプトを実行する方法はありますか?
私はこの事実を知っています議論するしかし、彼らは他のターミナル環境を使うことを提案し、私はtmuxまたはシェルスクリプトを使ってできることを探しています。
4つの異なるシェルは、4つの異なる仮想マシンへのSSHセッションです。
答え1
ツールは必要ありません。tmux
これを処理できます。
ウィンドウを開き、SSHを介して各サーバーに接続し、次の手順を実行しますCtrl。B
: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/