1

リモート端末にアクセスする前にコマンドを実行する方法はありますか

このコマンドを入力すると:

bash $> ssh user@server.com 'ls'

ls コマンドはリモート コンピューターで実行されますが、ssh が終了し、リモート セッションを続行できません。

接続を維持する方法はありますか?私がこれを尋ねている理由は、リモートの .bashrc ファイルを変更せずに ssh セッションのセットアップを作成したいからです。

4

2 に答える 2

2

疑似 tty の割り当てを強制し、lsコマンドの後に bash を実行します。

syzdek@host1$ ssh -t host2.example.com 'ls -l /dev/null;   bash'
-rwxrwxrwx    1 root     other          27 Apr  1  2005 /dev/null
bash-4.1$ 
于 2013-11-01T19:09:49.887 に答える
1

bash の init ファイルでプロセスの置換を試すことができます。以下の例では、関数を定義していますmyfunc

myfunc () {
   echo "Running myfunc"
}

これを、適切にエスケープされたワンライナーに変換して、bash の引数の<(...)プロセス置換の構造にエコーします。--init-file

$ ssh -t localhost 'bash --init-file <( echo "myfunc() { echo \"Running myfunc\" ; }" )  '
Password:
bash-3.2$ myfunc
Running myfunc
bash-3.2$ exit

接続すると、 my.bashrcは供給されませんがmyfunc、対話型セッションで定義され、適切に使用できることに注意してください。

より複雑な bash 関数では少し難しいかもしれませんが、うまくいきます。

于 2013-11-01T20:50:09.483 に答える