
Позвольте мне сначала объяснить мою ситуацию. У меня есть псевдоним в .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