リモート端末にアクセスする前にコマンドを実行する方法はありますか
このコマンドを入力すると:
bash
$> ssh user@server.com 'ls'
ls コマンドはリモート コンピューターで実行されますが、ssh が終了し、リモート セッションを続行できません。
接続を維持する方法はありますか?私がこれを尋ねている理由は、リモートの .bashrc ファイルを変更せずに ssh セッションのセットアップを作成したいからです。
リモート端末にアクセスする前にコマンドを実行する方法はありますか
このコマンドを入力すると:
bash
$> ssh user@server.com 'ls'
ls コマンドはリモート コンピューターで実行されますが、ssh が終了し、リモート セッションを続行できません。
接続を維持する方法はありますか?私がこれを尋ねている理由は、リモートの .bashrc ファイルを変更せずに ssh セッションのセットアップを作成したいからです。
疑似 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$
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 関数では少し難しいかもしれませんが、うまくいきます。