Как передать стандартный ввод при входе на удаленный сервер через скрипт

Как передать стандартный ввод при входе на удаленный сервер через скрипт

При входе на мой удаленный сервер он ожидает ввода данных пользователем, его bash_profile изменен таким образом.

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

Как мне войти на этот удаленный сервер с помощью SSH и передать эти данные через скрипт?

решение1

Установить expect:

apt-get install expect

Запустите следующий скрипт:

$ 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

Адаптируйте следующее:

  • root@serverс вашими реальными параметрами подключения к серверу
  • очевидно, пароль
  • имя, которое вы хотите предоставить скрипту внутри .bash_profileна целевом сервере
  • фактическая команда, которую вы хотите запустить на целевом сервере (вместо echo $$)

Связанный контент