我想通过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
答案 0 :(得分:1)
如果我理解正确,那么问题在于串行端口上的设备会丢弃输入过早的输入。
您可以通过在各个输入/行之间暂停来解决此问题。但是,那么您将无法使用输入文件。您需要使用“程序”生成输入,该程序可以执行暂停操作并将输入管道传递到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