web-dev-qa-db-ja.com

PuTTY / plinkを呼び出して、ユーザー入力でリモートSSHLinuxスクリプトを開始します

一見単純な質問で、わずかに望ましくない結果が得られます。

PuTTYを実行して、ユーザー入力を必要とするリモートLinuxサーバーでスクリプトを開始します

リモートスクリプトはread -p "Please enter name" NAMEを実行します
SSH経由でスクリプトを実行するためにplinkを使用できます。以下の試行と問題を以下に示します:--load nsはセッションをロードするためのものであることに注意してくださいそれは存在しません。つまり、デフォルトが使用されていないことを確認してください

1plink.exe -load ns <ip_addr> -l <user> -pw <password> <script path/name>問題)ユーザー入力を許可/表示しません。非対話型。

2-tを追加してptyを割り当てます:-
plink.exe -t -load nc <ip_addr> -l <user> -pw <password> <script path/name>問題)わかりました。これでユーザー入力が表示されますが、バックスペースを押すとCtrl + H(^ H)が表示されます。 ユーザーが間違えなければ大丈夫です!

3)保存されたセッションで代わりにPuTTYを使用する
PuTTY.exe -load "SavedSession"
問題)(a)大きなウィンドウではなく、新しいウィンドウを開きます。しかし、ニースほどではありません。 (b)保存されたセッションは簡単にはできません 移動(c)パスワードの取得プロンプト、plinkのようにパスワードを提供できません、私は知っています、キーを使用しますが、これは閉じたプライベートネットワークで、鍵を気にしないほうが簡単です!

したがって、理想的には、SSHをインラインで実行する必要があります。つまり、ユーザー名/パスワードの入力を求めるのではなく、現在のバッチファイル/コマンドラインシェル内から実行し、Linuxスクリプトを実行して、プロンプトと削除/バックスペースが機能するようにします。

事前にアイデア/ソリューションに感謝します。

2
IanVaughan

-tを追加してptyを割り当てます...わかりました。これでユーザー入力が表示されますが、バックスペースを押すとCtrl + H(^ H)が表示されます。

スクリプトを[ -t 0 ] && stty erase ^Hで実行すると、Backspaceキーが受け入れられるはずです。

さらに良い解決策は、OpenSSHのポート(たとえば、CygwinやMinGWからのポート)を使用することです。これにより、PuTTYと同じように完全な端末エミュレーションが提供されますが、コンソールウィンドウに保持されます。 (plinkツールは、生の8ビットデータ転送用に設計されています。)

編集: Cygwinの欠点は、IPv6サポートがないことかもしれません(私が正しく覚えている場合)。


パスワードの取得プロンプト、plinkのようにパスワードを提供することはできません

[...]しかし、これは閉じたプライベートネットワークであり、キーを気にしないほうが簡単です。

それでも、キーを設定すると解決する問題があります:)

(これを言うのは気分が悪いですが、PuTTYは-pwも受け入れます。)

2
user1686