web-dev-qa-db-ja.com

PuTTYシリアル接続を介したバッチコマンドの実行

Linuxマシンのファームウェアを更新するために使用する一連のコマンドがあります。シリアル接続を使用してマシンに接続すると、コマンドを1つずつ入力でき、正常に動作します。コマンドをバッチファイルで実行して、この手順を自動化したいと思います。

シリアル接続のプロファイルを「i5IS-COM4」として保存しているので、最初のバッチファイル「send.bat」を実行します。

commands.bat |  PuTTY -load i5IS-COM4

そして、commands.batは次のように読み取ります。

echo "this command works!"

'send.bat'を実行すると、ターミナルが正しく開き、Linuxマシンに接続しますが、echoコマンドが機能しません。誰かが私のバッチファイルを機能させるのを手伝ってくれるなら、それは大歓迎です!

私は次の投稿と他の多くの投稿を調べましたが、私の問題の解決策をまだ見つけていません。

batファイルからPuTTYにログインした後、ファイルから複数のコマンドを実行します

編集:

PuTTYの代わりにplinkを使用してコマンドリダイレクトを使用すると、空のターミナルが表示されます。次のコマンドを実行します:start plink.exe -load i5IS-COM4 < commands.txt次のようにcommands.txtを使用します:echo "this command works!"; /bin/bashは次の端末を返します: enter image description here

3
foxymop

PuTTYはGUIアプリケーションであり、コンソールアプリケーションではありません。 GUIアプリケーションでは入出力リダイレクトを使用できません。

シリアル接続を介してPuTTYでサーバー上でコマンドを自動的に実行する方法はありません。


Plink(PuTTYコマンドライン接続ツール) を使用できるはずですが。

PlinkはPuTTYと同等ですが、コンソールアプリケーションであるため、入出力リダイレクトを使用できます。

commands.bat | plink -load i5IS-COM4

「bat」ファイルは実際には(デバイスのコマンドを生成する)バッチファイルではなく、デバイスのコマンドを直接含むテキストファイルであるため、使用する必要があります。実行の出力ではなく、入力としてのファイルの内容:

plink -load i5IS-COM4 < commands.bat
2
Martin Prikryl