SSHセッションを自動的に閉じずにSSHを介して別のコンピュータに接続した後、自動的にコマンドを実行したいと思います。
インターネットを検索した後、いくつかの解決策を見つけましたが、それらのどれも私が望む方法で動作しませんでした。
ssh bla@bla "ls"
これにより、リモートシステムでコマンドが実行され、出力が表示され、接続がls
閉じます。
また、次のようにSSH設定ファイルを編集してみました。
Host bla
HostName bla
User bla
IdentityFile ~/.ssh/key
RemoteCommand ls
RequestTTY force
同じ問題です。 SSHを介して接続ls
し、コマンドを実行して出力を表示してから終了します。このRequestTTY
オプションも役に立ちません。
ssh bla@bla "ls ; bash"
実行後は切断されませんが、ls
端末インタフェース全体が表示されず、一部しか表示されませんme@machine:~$ thing
。
私が本当に欲しいもの:
bashエイリアスまたは.ssh/config
リモートシステムに接続する簡単なコマンドを入力し、そこからコマンドを実行してターミナルを開いたままにすることができます。基本的に私が手でやるのと同じです。
タイプ
ssh blah@blah
その後、接続したら入力します。
ls
答え1
ssh bla@bla "ls ; bash"
実行後に接続は切断されませんが、
ls
端末インタフェース全体が表示されず、内容が表示されないいくつかの簡単なコマンドラインのみが表示されますme@machine:~$
。
ls ; bash
上記のコマンドを指定した場合、SSH サーバーは擬似端末を提供しません。あなたはこれを観察しました。
一方、ssh bla@bla
単独ではデフォルトで擬似端末が割り当てられます。これがあなたが望むものです。疑似端末割り当てを強制するには、-t
またはを使用しますRequestTTY
。
この
RequestTTY
オプションも役に立ちません。
単純なリモートコマンドは役に立ちませんls
。必要ls; bash
または類似しています。
ttyを要求しても要求しないようですbash
。bash
後で要求すると、ls
ttyは要求されません。次の両方が必要です。
ssh -t bla@bla "ls; bash"
擬似ls
端末も使用されます。 「より広い絵」セクションを読んでください。私の答え違いを知ってください(特に「異常な点がある」部分)。
答え2
me@machineを削除するには、PS1環境変数を設定する必要があります。努力する:
ssh bla@bla "PS1=\"\"; ls; bash"