batch-file - 在使用 Plink 向串口发送登录和命令之间等待
问题描述
我想通过串口进行连接PLINK
。问题是代码(下面)不起作用,因为文件remove.txt
是一次发送的,而终端要求登录,然后才开始要求命令。有没有可能先登录然后执行命令文件?已test
保存的串行会话(com5 波特 115200)
命令:
C:\PROGRA~1\PuTTY\plink -load test < C:\Users\qj2p70\Desktop\remove.txt
remove.txt
文件:
root
root
cd /cfg_usr/delphi/etc
rm vip_coding_yes
解决方案
如果我理解正确,问题是串行端口上的设备丢弃了过早的输入。
您可以通过在各个输入/行之间暂停来解决这个问题。但是你不能使用输入文件。您需要使用“程序”生成输入,该程序可以执行暂停并将输入传递到plink
. 实现此类程序的一种简单方法是在批处理文件中使用复合语句:
(
echo root
timeout /t 5 > nul
echo root
timeout /t 5 > nul
echo cd /cfg_usr/delphi/etc
timeout /t 5 > nul
echo rm vip_coding_yes
) | C:\PROGRA~1\PuTTY\plink -load test
以上将产生 Windows CRLF 行尾。也许您的设备需要 *nix CR 行尾。您可以尝试以下 PowerShell 脚本 ( script.ps1
):
Write-Host -NoNewline "root`n"
Start-Sleep 5
Write-Host -NoNewline "root`n"
Start-Sleep 5
# ...
并像这样使用它:
powershell.exe -ExecutionPolicy Bypass -File script.ps1 | C:\PROGRA~1\PuTTY\plink -load test
推荐阅读
- android - 单击 RecyclerView 中的大列表中的项目时,ClickEvent 会被多次触发
- unity3d - Unity 突然不会在一个特定项目上构建 WebGL 版本
- php - 如何在codeigniter中发送带有附件文件的电子邮件
- delphi - 在 Delphi 中尝试使用 Indy 10.6.2 访问 HTTP 服务器时出现 403 错误
- r - hour() 函数出错了?
- jmeter - 如何解析在 jmeter 测试中的用户变量上定义的变量名称
- android - 如何在我的应用打开且屏幕打开时允许 Android 打瞌睡?
- amazon-cloudformation - 在仪表板 Cloudwatch 中使用 Fn::ImportValue
- python - 生成带有约束的大量排列(可能是 30 个)
- git - 如何从 Azure DevOps powershell 任务运行 git push 命令