我正在观察一个奇怪的事情,当我用命令行执行下面的脚本时,不发送密码。如果我执行没有命令行参数,它工作正常。最后可能会遇到密码$
的问题。如果最后显示$
,则$pass
将打印密码包含在{}
中。
因此发送密码错误发送,我无法做ssh。
#!/usr/bin/expect
set name [lrange $argv 0 0]
set pass [lrange $argv 1 1]
set server [lrange $argv 2 2]
puts $name
puts $server
puts $pass
spawn ssh $name@$server
sleep 2
expect "assword:"
send "$pass\r"
send "\r"
interact
# ./login.sh root Abc1Cef4$ XX.XX.XX.XX
root
XX.XX.XX.XX
{Abc1Cef4$}
spawn ssh root@10.45.60.22
Password:
Password:
答案 0 :(得分:0)
lrange
会返回列表。您应该使用lindex
:
set name [lindex $argv 0]
set pass [lindex $argv 1]
set server [lindex $argv 2]