web-dev-qa-db-ja.com

ログイン後にPuTTYでリモートコマンドを実行してシェルを実行し続ける方法は?

私がやろうとしていること:コマンドラインからPuTTYセッションを開始し、リモートマシンにログインし、提供されたディレクトリにcdを入力します。

PuTTY.exe -agent -ssh some.Host

これでセッションが開き、デフォルトのログイン名と秘密鍵でログインします。

echo cd /some/remote/path/ > c:/stuff/cmd.txt
PuTTY.exe -agent -ssh some.Host -m 'c:/stuff/cmd.txt'

それはセッションを開き、ログインし、コマンド(この場合はcd)を実行しそして終了します

どうやってセッションを開き、ログインし、cdそしてセッションを開いたままにしますか?

背景:私はウィンドウズの下でemacsを使い、tramp&plinkを使ってリモートのUnixマシン上のファイルを編集することがよくあります。そのリモートマシンのPuTTYセッションを開くホットキーを作成し、そのファイルのディレクトリに移動します。 emacs側では大した問題ではありませんが、私はPuTTYにこだわっています。

34

-mがすることは、それがPuTTYにSSHサーバにそのコマンドをシェルのINSTEADで開始するように指示することです。コマンドが終了すると、セッションも終了します。

cdコマンドの後にシェルを実行したい場合は、次のように明示的にシェルをcmd.txtに追加する必要があります。

cd /my/path ; /bin/bash

また-mは "nopty"​​/non-interactiveモードを意味します。対話型シェルを使用するには、 -tスイッチ を使用してそれをオーバーライドする必要があります。

PuTTY.exe -ssh example.com -m "c:\path\cmd.txt" -t

代わりに KiTTY-cmdスイッチと一緒に使用すると、必要なことができます(一時ファイルは不要です)。

31
Martin Prikryl