
Déjame explicarte mi situación primero. Tengo un alias en .bashrc:
doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }
Tengo un script que básicamente consta de varias acciones como:
check current settings
read comment
do actions
write $comment in a file
restart service
Entonces ejecuto un comando
doscript server scriptname parameter
Sin embargo, la parte "leer comentario" no funciona. En lugar de esperar hasta que ingrese el comentario, se ejecuta inmediatamente y no agrega nada al archivo de comentarios.
¿Hay alguna manera de ingresar la variable en ese caso?
Respuesta1
La forma habitual de hacer esto sin cambiar demasiado es copiar el archivo al control remoto y luego ejecutarlo, manteniendo así la entrada estándar disponible para su entrada tty. P.ej
scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3
o si no puede scp
reemplazar esa línea por
ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2