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


35

私がやろうとしていること:コマンドラインから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セッションを開き、そのファイルのディレクトリにchdirsするホットキーを作成したいと思います。emacs側では大したことではありませんが、私はPuTTYにこだわっています。

回答:


33

これ-mは、シェルのINSTEADコマンドを開始するように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ます。これは、必要なことを行います(そして、一時ファイルは必要ありません)。


私はそれを試し(cmd.txtに/ bin / bashを追加)、それは動作しません。私の知る限り、bashは非対話型モードで起動し、実行するコードがなければ終了します。対話型シェルをそのように開始する方法はありますか?
Artyom V. Kireev

その間、mcを起動しようとしました。:-)それはしませんでした、そしていくつかの出力を提供しました:Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set.
Artyom V. Kireev

ここのガイドラインに感謝しますが-m "myfile.sh" -t、tinycorelinux vm(/ bin / ash)に接続するためにputty を使用しようとすると問題があるようです。次のエラーが表示されます:i.imgur.com/QN5oRXC.png(スクリプトで開始するecho ".."と、不正な文字の後にスクリプトの最初の文字が常に表示されます
Vincent De Smet 14

パテプロファイルでリモートコマンドの構成を使用する場合、機能します。
Vincent De Smet 14

-1

emacsで開始するtrampセッションと、puttyを介して実行するシェルセッションは、完全に独立したプロセスです。

trampの構成オプションをチェックして、emacs構成内のホストごとにデフォルトのディレクトリを設定する方法があるかどうかを確認することをお勧めします。ここで説明されているtramp-remote-pathように、構成オプションから開始することもできます。

接続を確立するためにputtyを使用する必要がある場合は、おそらくsshトンネルを設定し、emacs / trampを介して接続する必要があります。


ここではEmacsとtrampは無関係です。背景のためだけに付け加えました。これは、emacsでファイルを編集することではなく、シェルを開いてそのファイルで何か他のことを行う(たとえば、スクリプトを実行する)ことです。「パテを起動し、ホストを選択してから、必要なパスにcdする」ことにうんざりしているので、それを自動化したい。
Artyom V. Kireev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.