#!/bin/bash
/usr/bin/expect << SSHLOGIN
spawn ssh -o StrictHostKeyChecking=no admin@$host
expect {
Password: {
send "Pass$word\n"
expect {
OK: {
send "xstatus\n"
send "quit\n"
}
}
}
}
SSHLOGIN
它无法ssh,因为它没有逃避&#39; $&#39; &#34;传递$ word \ n&#34;因为$是密码的一部分,并且没有传递变量。你怎么逃避它?我知道在bash中,你会添加&#39; \&#39;,但由于密码在期望脚本部分,这不起作用。
编辑:
将Pass$word\n
更改为Pass\\\$word\n
有效
答案 0 :(得分:2)
此处 - 文档是bash代码,因此您仍然使用\$
。
期望脚本是TCL,所以你也需要逃离$
。通过两个级别的转义,您将获得:
send "Pass\\\$word\n"