如何使用expect从bash函数定义密码

时间:2012-11-23 22:58:54

标签: bash expect

我希望能够接受一些命令wget http://host/password.txt并将其读入一个变量中,以便我可以在SSH脚本中使用它。

以下是一些不正确的代码:

set password "wget -O tmp http://host/password.txt && cat tmp";
spawn ssh 111.222.333.444;
send "$password\r";

2 个答案:

答案 0 :(得分:1)

以下是如何在bash中使用expect的示例:

wget -O tmp http://host/password.txt
password=$(<tmp)
login="root"
IP="localhost:8000"

expect_sh=$(expect -c "
spawn ssh $login@$IP
expect \"password:\"
send \"$password\r\"
expect \"#\"
send \"cd /var\r\"
")

echo "$expect_sh"

但是,除非您有特定的理由这样做,否则using ssh keys是首选方法。

答案 1 :(得分:-1)

您可以将密码保存为变量,如下所示:

  

wget -O tmp http://host/password.txt
  密码= $(cat tmp);

但你不能在ssh密码上使用它,因为ssh密码被终端输入作为交互式动作读取。