Comando "ler" do usuário ao executar scripts remotos por ssh

Comando "ler" do usuário ao executar scripts remotos por ssh

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 scpsubstituir essa linha por

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

informação relacionada