
Deixe-me explicar minha situação primeiro. Eu tenho um alias em .bashrc:
doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }
Tenho um script que consiste basicamente em diversas ações como:
check current settings
read comment
do actions
write $comment in a file
restart service
Então eu executo um comando
doscript server scriptname parameter
No entanto, a parte "ler comentário" não funciona. Em vez de esperar até eu inserir o comentário, ele é executado imediatamente, sem adicionar nada ao arquivo de comentários.
Existe uma maneira de inserir variável nesse caso?
Responder1
A maneira usual de fazer isso sem alterar muito é copiar o arquivo para o controle remoto e executá-lo, mantendo assim o stdin disponível para sua entrada tty. Por exemplo
scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3
ou se você não puder scp
substituir essa linha por
ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2