Cómo pasar la entrada estándar al iniciar sesión en un servidor remoto mediante un script

Cómo pasar la entrada estándar al iniciar sesión en un servidor remoto mediante un script

Al iniciar sesión en mi servidor remoto, espera una entrada del usuario, su bash_profile se modifica de esa manera.

[nikhil]$ cat .bash_profile
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
read -p "enter your name " Name
echo $Name

¿Cómo puedo iniciar sesión en este servidor remoto usando ssh y pasar esa entrada a través de un script?

Respuesta1

Instalar expect:

apt-get install expect

Ejecute el siguiente script:

$ expect <<EOF
set timeout -1

spawn ssh -o "StrictHostKeyChecking=no" root@server

expect "root@server's password:"
send -- "12345678PASSWORD\r"
expect "enter your name "
send -- "susan\r"
expect "root@server"
send -- "echo $$\r"
send -- "exit\r"
expect eof
EOF

Adapte lo siguiente:

  • root@servercon los parámetros reales de conexión del servidor
  • obviamente la contraseña
  • el nombre que desea proporcionar al script dentro .bash_profiledel servidor de destino
  • el comando real que desea ejecutar en el servidor de destino (en lugar de echo $$)

información relacionada