ssh expect带变量的命令

时间:2018-02-05 21:26:54

标签: shell expect

我打算从文件中取密码而不是将参数传递给脚本

set cmd1 {`cat passwdfile.txt | grep -w pj |  cut -d";" -f5`}
spawn ssh username@servername

expect "password: "
send "$cmd1\r"
expect "$ "
send "ps -ef |grep planning1\r"
expect "$ "
send "exit\r"

错误

    username@servername's password:
    Permission denied, please try again.

为什么不从文件中取密码?

1 个答案:

答案 0 :(得分:0)

在ssh要求输入密码时,您无权访问shell,因此反引号和所有其余内容将作为密码以普通字符发送。

假设您的本地计算机上存在该文件,请在生成之前获取密码:

set pw [exec grep -w pj passwdfile.txt | cut -d\; -f5]
spawn ssh ...
expect "password: "
send "$pw\r"

当然,以纯文本形式存储密码是非常不安全的。您应该设置ssh密钥以允许您登录而无需输入密码。