2013-04-25 15:06:20 +0000 2013-04-25 15:06:20 +0000
37
37

ログイン後に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を実行して、セッションを開いたままにするにはどうすればいいですか?

背景です。私はWindowsでemacsを使用しており、リモートのUnixマシンでtrampやplinkを使用してファイルを編集することがよくあります。リモートマシンのPuTTYセッションを開き、そのファイルのディレクトリをchdirsするホットキーを作りたいと思っています。emacs側では大したことではありませんが、PuTTYには行き詰っています。

回答 (2)

33
33
33
2013-04-25 16:00:56 +0000

-mが何をするかというと、PuTTYがSSHサーバにシェルの代わりにコマンドを起動するように指示するということです。つまり、コマンドが終了すると、セッションも終了します。

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

cd /my/path ; /bin/bash

また、-m は “nopty”/非インタラクティブモードを意味します。インタラクティブなシェルを使用するには、 -t スイッチ を使ってこれを上書きする必要があります。

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

あるいは、 KiTTY -cmd スイッチを付けたものを使用してください。

-1
-1
-1
2013-04-25 15:11:43 +0000

emacs で起動している tramp セッションと putty 経由で実行しているシェルセッションは完全に別のプロセスです。

emacs の設定の中でホストごとにデフォルトのディレクトリを設定する方法があるかどうか、tramp の設定オプションを確認した方が良いでしょう。tramp-remote-path の設定オプションから始めてみてはいかがでしょうか。

接続を確立するために putty を使う必要がある場合は、おそらく ssh トンネルを設定して、それを使って emacs/tramp に接続させたいと思うでしょう。