PLink — запуск скрипта с выводом

Работаю над автоматизацией нескольких скриптов, которые запускаю регулярно. У меня есть то, что, казалось, должно быть легко, но у меня с этим проблемы. Я использую VBA, чтобы создать два файла и запустить это. Один текстовый файл содержит список команд и один BAT-файл, содержащий команду plink, инициирующую все это. Оба файла ниже. После создания файл plink.exe и оба этих файла находятся на рабочем столе.

Проблема в том, что сценарий, который я запускаю, имеет вывод, даже когда я использую модификатор «&» в конце команды. Мне не разрешено каким-либо образом изменять сценарий. При запуске командного файла сценарий работает нормально, но из-за вывода команда выхода игнорируется. Я попытался добавить команду sleep в конец строки сценария перед выходом и добавить выход сразу после строки сценария.

BAT-файл - Chg.bat

plink [user]@[ip] -pw [password] < C:\Users\Mike\Desktop\pcmd.txt

Командный файл - pcmd.txt

cd /opt/test/srt
./srt.tool 20150506 20150506 &
exit

person Mikel1256    schedule 06.05.2015    source источник
comment
Вас интересует результат или нет?   -  person Martin Prikryl    schedule 06.05.2015
comment
Нет, наплевать. Хотя, если мы не можем полностью игнорировать это, я не возражаю против ожидания завершения вывода перед выполнением команды выхода. Я просто не мог этого сделать   -  person Mikel1256    schedule 06.05.2015
comment
Вы пытались перенаправить его как ./srt.tool 20150506 20150506 > /dev/null 2>&1   -  person Martin Prikryl    schedule 06.05.2015
comment
Итак, перенаправление работает, чтобы скрыть его, но теперь команда выхода зависает. Я получаю У вас есть запущенные задания, когда происходит выход. Я запустил ps-ef |grep srt.tool на сервере и бросил сон в конце скрипта. К тому времени, когда команда выхода будет запущена после сна, srt.tool будет готов.   -  person Mikel1256    schedule 06.05.2015
comment
srt.tool запускает некоторые процессы в фоновом режиме (например, используя &).   -  person Martin Prikryl    schedule 06.05.2015
comment
Да, я только что получил его на работу сейчас. Я просто переместил сон из конца строки скрипта в начало строки выхода, и теперь это работает. Совершенно не уверен, почему это работает, но я возьму это.   -  person Mikel1256    schedule 06.05.2015
comment
Пожалуйста, опубликуйте свое решение как ответ.   -  person Martin Prikryl    schedule 06.05.2015
comment
Почему это происходит? У меня была аналогичная проблема. У меня было plink user@ip -pw pass "sh run.sh". В run.sh было много кода, который работал нормально, но в конце был еще один вызов как sh another_script.sh;. Этот второй скрипт не работал правильно. Но когда я изменил его на sh another_script.sh &; sleep 60; , все заработало нормально.   -  person tabs_over_spaces    schedule 07.11.2017


Ответы (1)


Это то, что сейчас работает для меня для файла сценария:

cd /test/srt
./srt.tool 20150506 20150506 > /opt/test/srt/test.txt &
rm test.txt
sleep 60; exit

В файле Chg.bat ничего не изменилось. Видимо, направить его, а потом поспать перед выходом — вот и все, что было нужно. Не так гладко, как хотелось бы, но я готов работать, а не работать каждый день.

person Mikel1256    schedule 06.05.2015