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