Ждите между отправкой логина и команд на последовательный порт, используя Plink - PullRequest
1 голос
/ 25 апреля 2019

Я хочу установить соединение через последовательный порт в 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

1 Ответ

1 голос
/ 25 апреля 2019

Если я правильно понимаю, проблема в том, что устройство на последовательном порту сбрасывает ввод, который поступает слишком рано.

Это можно решить, сделав паузу между отдельными входами / линиями.Но тогда вы не можете использовать входной файл.Вам необходимо сгенерировать ввод, используя «программу», которая может делать паузы и передавать данные на 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
...