web-dev-qa-db-ja.com

バッチファイルを作成してPuTTYにコマンドを入力する方法

SSHサーバー(ジャンプサーバー)アクセスを自動的に取得する.batファイルを作成しました。今、私はそのウィンドウでヒットしたいいくつかのコマンドを持っています。

元のために。 (rootアクセスを取得するには)

usrun -u root Rush

このコマンドでは、パスワードの入力を求められます。

それで、.batファイルを通じてこれを完全に実現するにはどうすればよいですか?

3
Umang

PuTTYを使用してコマンドを自動的に実行するには、 -mスイッチ を使用して、実行するコマンドを含むテキストファイルを渡します。

PuTTY.exe -ssh user@Host  -m commands.txt

commands.txtに含まれる場所

usrun -u root Rush

しかし、これは、usrunコマンドへの入力であり、それ自体のコマンドではないため、-mはここでは役に立たないため、パスワードの助けにはなりません。 usrunがわからないので、パスワードを「入力」して他の方法を「認証」する方法があるかどうかはわかりません。 一般に、パスワード入力を自動化しようとするときはいつでも、あなたは何か間違ったことをしています。これはセキュリティ上のリスクです。より良い(=より安全な)方法があるかどうかを常に確認してください。


別の問題は、追加のコマンドです。実行するすべてのコマンドを同じ環境/シェルで実行する場合は、それらをcommands.txtに1行ずつ入力できます。

command1
command2

ただし、すべてのSSHサーバーが複数の回線をサポートしているわけではないことに注意してください。大多数はそうします。そうでない場合は、常にサーバー/シェル固有の方法を使用して、次のように1行で複数のコマンドを実行できます。

command1 && command2

しかし、追加のコマンドが実際に最初のコマンドのサブコマンドである場合、sushbashsshftpなどのコマンドの場合(およびusrunの場合)、追加のコマンドは実際にはトップレベルの環境/シェルのスタンドアロンではない最初のコマンド。これは、実際には上記のパスワード入力の問題と同じ問題です。

パスワードの問題とは逆に、サブコマンドを使用する場合、基本コマンドには、入力を使用する代わりに、それらを提供する別のメカニズムがある場合があります。


そうは言っても、PuTTYの代わりに Plink(PuTTYコマンドライン接続ツール) を使用できます。これは、PuTTYのように機能するPuTTYパッケージのツールですが、GUIではなくコンソールアプリケーションです。そのため、入出力リダイレクトを使用できます。したがって、コンソールで入力したかのように、パスワードまたはプライマリコマンドのサブコマンドをファイルからリダイレクトできます。とにかく、Plinkはタスクを自動化するツールであり、PuTTYではありません。

echo usrun -u root Rush>input.txt
echo password>input.txt
echo command_for_usrun>input.txt
plink -ssh user@Host < input.txt

または、必要な処理を行う-cmdスイッチを指定して KiTTY を使用します。 KiTTYはGUIアプリケーションです(PuTTYのクローンです)。その-cmdスイッチは基本的にタイピングをシミュレートするため、コマンドへの入力(パスワードとサブコマンド)に問題はありません。しかし、私はそれがかなり信頼できないと思いました。あまりお勧めしません。しかし、あなたはそれがあなたの仕事に十分であると思うかもしれません。

4
Martin Prikryl