我先说明一下我的情况。我在 .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