我有一系列命令,用于更新 Linux 机器上的固件。当我使用串行连接连接到机器时,我可以逐个输入命令,它们工作正常。我想通过在批处理文件中运行命令来自动执行此过程。
我有一个串行连接的配置文件,保存为“i5IS-COM4”,因此我运行我的第一个批处理文件“send.bat”,其内容为:
commands.bat | putty -load i5IS-COM4
并且commands.bat内容为:
echo "this command works!"
当我运行“send.bat”时,它会正确打开一个终端并连接到我的 Linux 机器,但 echo 命令不起作用。如果有人能帮助我使批处理文件正常工作,我将不胜感激!
我已查看了以下帖子和许多其他帖子,但尚未找到解决我的问题的方法。
编辑:
当我使用 plink 而不是 putty 进行命令重定向时,我只得到一个空终端。运行以下命令:
start plink.exe -load i5IS-COM4 < commands.txt
使用如下的命令.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