期望 lrange 在开头和结尾添加 { }
expect lrange adding { } at beginning and end
我观察到一件奇怪的事情,当我用命令行执行下面的脚本时,没有发送发送密码。如果我在没有命令行参数的情况下执行,它工作正常。可能是密码末尾有 $
的问题。如果 $
出现在末尾,则 $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:
lrange
会 return 一个 list。你应该使用 lindex
:
set name [lindex $argv 0]
set pass [lindex $argv 1]
set server [lindex $argv 2]
我观察到一件奇怪的事情,当我用命令行执行下面的脚本时,没有发送发送密码。如果我在没有命令行参数的情况下执行,它工作正常。可能是密码末尾有 $
的问题。如果 $
出现在末尾,则 $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:
lrange
会 return 一个 list。你应该使用 lindex
:
set name [lindex $argv 0]
set pass [lindex $argv 1]
set server [lindex $argv 2]