私がやろうとしていること:コマンドラインから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にこだわっています。
-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
スイッチと一緒に使用すると、必要なことができます(一時ファイルは不要です)。