期望lrange在开头和结尾添加{}

时间:2017-06-28 11:49:07

标签: tcl expect

我正在观察一个奇怪的事情,当我用命令行执行下面的脚本时,不发送密码。如果我执行没有命令行参数,它工作正常。最后可能会遇到密码$的问题。如果最后显示$,则$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: 

1 个答案:

答案 0 :(得分:0)

lrange会返回列表。您应该使用lindex

set name   [lindex $argv 0]
set pass   [lindex $argv 1]  
set server [lindex $argv 2]