通常、次のようにコマンドをsshに渡すと
ssh me@example.com 'some-command.sh'
非対話型セッションを取得し、コマンド(またはスクリプトなど)が実行されるとすぐにsshが終了します。対話型セッションを取得し、ローカルマシンから指定したコマンドを実行する方法を教えてください。たとえば、画面を開いて特定の画面セッションを再開できるようにしたいと思います。
ssh me@example.com 'screen -r 12345'
ただし、これは許可されず、「端末に接続する必要があります」というエラーが返されます。これは本質的に「このコマンドを対話型シェルから呼び出す必要がある」ことを意味すると推測します。
別の例として、仕事で大量のマシンを使用していますが、特定のことを行うために共有アカウントを使用する必要があることがよくあります(ええ、わかっています:悪い考えですが、私を責めないでください方法)、および彼らは通常、デフォルトのシェルとしてkshを持っています。ログインし、bash(またはzsh)に切り替えて、自分のアカウントの.bash_profile(または.zshrc)を取得したいと思います。インタラクティブなsshセッションを確立し、ログイン時に実行するコマンドをリモートマシンに渡すことができれば、これは簡単です。
私は投稿することを念頭に置いて非常に巧妙な(そしてテストされていない)ソリューションを持っていますが、誰かがより良い方法を知っていることを望んでいます。
更新:これに気付いていない人のために、私はこれをすべて手作業で行うつもりはないので、対話型セッションを開いてから手作業で行うように言っても、実際には何も解決しません。
2回目の更新:明確にするためにもう一度試みます:サーバー(プログラムでクライアントで指定)で(任意の)コマンドを実行しようとしていますが、それらのプログラムコマンドで行われた操作の影響を受ける対話型セッションを開いています。
echo "command" | ssh user@remote_host