我希望能够接受一些命令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";
这是一个如何在 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"
但是,除非您有特定的理由这样做,否则使用 ssh 密钥是首选方法。
您可以像这样将密码保存到变量中:
wget -O tmp
http://host/password.txt
密码=$(cat tmp);
但是您不能在 ssh password 上使用它,因为 ssh 密码是由终端输入作为交互操作读取的。