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 を使用してコマンド リダイレクトを使用すると、空のターミナルが表示されます。commands.txt を次
start plink.exe -load i5IS-COM4 < commands.txt
のように使用して次のコマンドを実行すると、
echo "this command works!"; /bin/bash
次のターミナルが返されます。
答え1
PuTTY はコンソール アプリケーションではなく GUI アプリケーションです。GUI アプリケーションでは入出力リダイレクトは使用できません。
シリアル接続経由で PuTTY を使用してサーバー上でコマンドを自動的に実行する方法はありません。
使用できるはずですがPlink (PuTTY コマンドライン接続ツール)。
Plink は PuTTY と同等ですが、コンソール アプリケーションであるため、入出力リダイレクトを使用できます。
commands.bat | plink -load i5IS-COM4
ただし、「bat」ファイルは実際にはバッチ ファイル (デバイスのコマンドを生成するもの) ではなく、デバイスのコマンドが直接含まれているテキスト ファイルであるため、ファイルのコンテンツを実行の出力ではなく入力として使用する必要があります。
plink -load i5IS-COM4 < commands.bat