Пользовательская команда «чтение» при выполнении удаленных скриптов через ssh

Пользовательская команда «чтение» при выполнении удаленных скриптов через ssh

Позвольте мне сначала объяснить мою ситуацию. У меня есть псевдоним в .bashrc:

doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }

У меня есть скрипт, который по сути состоит из нескольких действий, таких как:

check current settings
read comment
do actions
write $comment in a file
restart service

Итак, я запускаю команду

doscript server scriptname parameter

Однако часть "прочитать комментарий" не работает. Вместо того, чтобы ждать, пока я введу комментарий, он немедленно выполняется, ничего не добавляя в файл комментариев.

Есть ли способ ввести переменную в этом случае?

решение1

Обычный способ сделать это, не внося слишком много изменений, — скопировать файл на удаленный компьютер и затем выполнить его, тем самым оставив stdin доступным для ввода с tty. Например:

scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3

или если вы не можете scpзаменить эту строку на

ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2

Связанный контент