Comando "ler" do usuário durante a execução de scripts remotos sobre o ssh

0

Deixe-me explicar minha situação primeiro. Eu tenho um alias em .bashrc:

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

Eu tenho um script, que consiste basicamente em várias 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 "read comment" não funciona. Em vez de esperar até que eu digite o comentário, ele imediatamente executa, não adicionando nada ao arquivo de comentário.

Existe uma maneira de inserir uma variável nesse caso?

    
por deimos 17.05.2016 / 16:46

1 resposta

1

A maneira usual de fazer isso sem alterar muito é copiar o arquivo para o controle remoto e, em seguida, executá-lo, portanto, mantendo 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 pode scp substituir essa linha por

ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2
    
por 17.05.2016 / 18:02

Tags