私はsshサーバーに接続した後にコマンドを実行するためのUNIXまたはbashコマンドを見つけようとしています。例えば:
ssh name@ip "tmux list-sessions"
上記のコードはうまくいきます、それはセッションをリストします、しかしそれはその後すぐに切断します。サーバー側のsshrcに入れてもうまくいきますが、クライアント側で入力できるようにする必要があります。コマンドを実行できるようにしたいのですが、ログインしてウィンドウを開いてから、設定したコマンドを実行します。私はもう試した
[command] | ssh name@ip
ssh name@ip [command]
ssh name@ip "[command]"
ssh -t name@ip [command]
ssh -t 'command; bash -l'
コマンドを実行し、それが完了したらログインシェルを起動します。例えば:
ssh -t [email protected] 'cd /some/path; bash -l'
LocalCommand
オプションが有効になっている場合は、PermitLocalCommand
コマンドラインオプションを使用できます。
ssh username@hostname -o LocalCommand="tmux list-sessions"
利用可能なオプションについての詳細は、ssh_config
のmanページを参照してください。
これはかなりあなたが探しているものではありませんが、私はそれが似たような状況で役に立つことがわかりました。
私は最近私の$HOME/.bashrc
に以下を追加しました(bash以外のシェルでも同様のことが可能です)。
if [ -f $HOME/.add-screen-to-history ] ; then
history -s 'screen -dr'
fi
ある特定のマシンでscreen
セッションを実行し続けていると、そのマシンへのssh
接続が切断されてしまう問題があり、再接続するたびにscreen -dr
を再実行する必要があります。
それに加えて、そして私のホームディレクトリにその(空の)ファイルを作成した後、私は私のシェルが起動したとき私の歴史の中に自動的にscreen -dr
コマンドを持っています。再接続した後、私はただタイプすることができます Control-PEnter そして私は私のスクリーンセッションに戻ってきました - あるいは私はそれを無視することができます。柔軟ですが、完全に自動ではありません。tmux list-sessions
と入力するよりも簡単です。
history -s
コマンドを無条件にすることをお勧めします。
これには、各ターゲットシステムで$HOME/.bashrc
を更新する必要があります。これは、目的に合わない場合もあれば、不適切な場合もあります。