Виконання декількох команд через послідовний порт з PuTTY з файлом .bat із затримкою між окремими командами


1

send.bat:

plink -load test < commands.txt

(тест - збережений сеанс в шпаклівці)

введіть тут опис зображення

Commands.txt

echo set_zero
timeout /t 3 /nobreak >nul 2>&1
pause >nul 2>&1
echo set_a 65535
pause >nul 2>&1
timeout /t 3 /nobreak >nul 2>&1
echo set_a 0
timeout /t 3 /nobreak >nul 2>&1
pause >nul 2>&1

Коли я запускаю send.bat, він може відкривати шпаклівку послідовно, але він не може вводити команди, які я записую в командах.txt.

введіть тут опис зображення

Я кладу ці файли в один і той же каталог. введіть тут опис зображення


2
До чого підключається послідовний порт? Що ви намагаєтеся досягти? Будь ласка, не відповідайте на коментарі; відредагуйте  своє запитання, щоб зробити його більш зрозумілим та повним.
Скотт

Відповіді:


1

Ваш commands.txtфайл - просто безлад.

Я припускаю, що ви хочете відправити set_zeroкоманду, а не echo set_zeroкоманду, тому поставте set_zeroу файл, не echo set_zero.

Хоча якщо вам потрібно зробити паузу між командами, просте перенаправлення вводу не допоможе, оскільки ви не можете використовувати timeoutкоманду тоді. Ви хочете виконати timeoutкоманду локально, поки ви надсилаєте її до послідовного порту. Ваш код насправді правильний, якби ви використовували його як сценарій, який генерує вхід для plink. Але для цього вам потрібно |не користуватися <.

Це може зробити те, що ви хочете:

(
    echo set_zero
    timeout /t 3 /nobreak >nul 2>&1
    pause >nul 2>&1
    echo set_a 65535
    pause >nul 2>&1
    timeout /t 3 /nobreak >nul 2>&1
    echo set_a 0
    timeout /t 3 /nobreak >nul 2>&1
    pause >nul 2>&1
) | plink -load test

Хоча ви можете рухатися pauseлише після plink:

(
    ...
    echo set_a 0
    timeout /t 3 /nobreak >nul 2>&1
) | plink -load test

pause >nul 2>&1

Як альтернатива, як вже запропонував @Appleodity, перейменуйте commands.txtїї commands.batта використовуйте так:

commands.bat | plink -load test

Знову, можливо, так (після переходу pauseз commands.bat):

commands.bat | plink -load test

pause >nul 2>&1

ви думаєте, що я поміщаю ці файли в один і той же каталог правильно? putty.exe сумісний з планкінгом? ви можете побачити малюнок у рядку запитань.
yong.cheng

Так буде робити той самий каталог (і цей каталог повинен бути робочим каталогом). - Я не знаю, що ви маєте на увазі під "putty.exe, сумісний із планкінгом?" - Я бачу картину, але не розумію, про що ви просите.
Мартін Прикрил

Я маю на увазі, я не знаю, чому в send.bat використовувати планкін, але не шпаклівку, я можу зараз успішно надсилати команди з bat і бачу отримані команди в інший послідовний порт, але команди не можуть виправдатись і є відповіді з моїми командами немає, це ненормально.
yong.cheng

Я маю на увазі, я не знаю, чому в send.bat використовувати планкін, але не шпаклівку, я можу зараз успішно надсилати команди з bat і бачу отримані команди в інший послідовний порт, але команди не можуть виправдатись і є відповіді з моїми командами немає, це ненормально.
yong.cheng

Немає можливості передавати команди PuTTY. PuTTY призначений для інтерактивного використання, а не для автоматизації виконання команд.
Мартін Прикрил

0

Відповідно до документації правильне використання:

plink -load test -m commands.txt

-m = Читання віддалених команд з файлу.

https://www.ssh.com/ssh/putty/putty-manuals/0.68/Chapter7.html#plink-usage

Хоча я питаю, для чого ці команди використовуються. Це майже схоже на те, що вміст commands.txtфайлу - це ще один пакетний файл, і ви, можливо, очікуєте, що цей файл буде виконаний, а вихід буде поданий до послідовного порту.

Це не так, як це працює. Буквальний вміст commands.txtвідправляється до послідовного порту, можливо, це призводить до всіх недійсних помилок команди.

Якщо ви хочете виконати вміст commands.txtі направити висновок в послідовний порт , ви повинні перейменувати commands.txtв commands.batі трубу виходу в Plink з допомогою наступної команди: commands.bat | plink -load test


@ yong.cheng, то найкраще зробити це спробувати по одній команді за один раз. Спростіть речі та розбийте їх, поки не зможете виконати одну основну команду для запуску.
Appleoddity

1
-mне працює з послідовним портом, лише з SSH.
Мартін Прикрил
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.