#!/bin/bash
/usr/bin/expect << SSHLOGIN
spawn ssh -o StrictHostKeyChecking=no [email protected]$host
expect {
Password: {
send "Pass$word\n"
expect {
OK: {
send "xstatus\n"
send "quit\n"
}
}
}
}
SSHLOGIN
这是无法通过ssh,因为它不是在逃避“通行证$字\ N”的“$”字符,因为$是密码的一部分并没有传递变量。你会如何逃避它?我知道在bash中,你会添加'\',但由于密码在期望脚本部分,所以不起作用。
编辑: 改变Pass$word\n
到Pass\\\$word\n
作品
您可以删除,如果你的报价逃脱你的定界符的一层:'期待<<“SSHLOGIN'' –
@glennjackman这也将禁止在ssh主机$扩张命令。 –
是真的,我错过了。 –