управление / захват вывода команд, запущенных на удаленном сервере в BASH, используя именованный канал - PullRequest
0 голосов
/ 28 марта 2019

Мой вопрос в основном основан на этом: отправка своевременных команд в ssh

У меня следующий вопрос, и я могу подключиться к серверу, например:

mkfifo CMDs.txt
exec 7> CMDs.txt

затем с другого терминала я подключаюсь к серверу следующим образом:

sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt 

сеанс устанавливается, но это не интерактивный сеанс (как и должно быть). Но я могу отправлять команды на удаленный сервер, перенаправляя их на дескриптор файла 7, например:

echo "some command" >&7 
echo "some more command" >&7 

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

sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt >>outfile.txt

также, как упоминалось в справочном вопросе, exec 7>&- должен завершить сеанс, но этого не произошло, так как же завершить сеанс после того, как я отправлю все свои команды?

...