expect免交互用法

一、ssh免交互远程连接linux服务器

  ssh在远程连接linux系统时,会有交互,比如输入yes/no,或者需要输入密码。我们怎么避免这些交互呢!比如我们可以用telnet远程登录交换机,去备份交换机的配置,如果每一台都要手动输入密码,在有很多台交换机的情况下,这些交互就会显得很繁琐,或者我们需要自动备份这些交换机,在写脚本的时候也需要避免这些交互。现在我们来用expect这个工具来避免这些交互。

1.1、安装expect

命令:

1 [root@client yck]# yum -y install expect
2 [root@client yck]# rpm -q expect
3 expect-5.45-14.el7_1.x86_64
4 [root@client yck]# 
5 [root@client yck]# 

 

 1.2、远程登录linux系统的脚本

脚本:

1 #!/usr/bin/expect                                           #制定expect解释器
2 set ip [lindex $argv 0]                                    #创建变量ip,并指定第一个位置变量        
3 spawn ssh root@$ip                                      #spawn创建一个回话,root用户远程连接
4 expect {
5         "yes/no" { send "yes\r";exp_continue }  #捕捉到“yes/no”,就发送指令yes,\r表示回车,ex_continue表示没有捕捉到“yes/no”,继续下一步
6         "password:" { send "admin@1234\r" };   #捕捉到"password:",就发送“密码+\r”
7 }
8 interact                                                           #保持连接,不退出ssh    
9             

1.3、测试远程连接是否还有交互

 

 

posted @ 2019-11-26 13:58  龙翔浅帝  阅读(389)  评论(0编辑  收藏  举报