スクリプトを介してリモートサーバーにログインするときに標準入力を渡す方法

スクリプトを介してリモートサーバーにログインするときに標準入力を渡す方法

リモート サーバーにログインするときにユーザー入力が必要になるため、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 $$

関連情報