如何透過腳本登入遠端伺服器時傳遞std輸入

如何透過腳本登入遠端伺服器時傳遞std輸入

當登入我的遠端伺服器時,它需要使用者輸入,它的 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 $$

相關內容