使用expect实现自动登录的脚本,解决ssh登录认证密码输入问题
例子:
脚本代码如下:
###############################################!/usr/bin/expect
#
#"设置超时"
set timeout 5
#"传递变量"
set warname [lindex $argv 0]
#"执行命令给变量赋值"
set a [exec sudo rpm -qa gitlab-ce]
#"spawn登录到主机"
spawn /usr/bin/ssh -p 22 -i /home/ndnnd/test test@172.18.10.160
#"匹配交互字段,输入命令或密码"
expect "*test':"
#send "yes\r"
#expect "password:"
#"发送命令\r结尾"
send "12345\r"
expect "*]$"
#"switch用法类似于case"
switch $warname {
"zabbix-2.4.1.tar.gz" {
send "sudo scp root@172.18.10.236:/root/$warname /home/test\r"
expect "*password:"
send "tl0001010\r"
interact
}
"gitlab-ce-8.0.5-ce.0.el6.x86_64.rpm" {
send "sudo scp root@172.18.10.236:/root/$warname /home/test\r"
expect "*password:"
send "tl0001010\r"
interact
}
#"退出"
"quit" {
send "exit\r"
expect eof
exit
}<