您的位置:首页 > 运维架构 > Linux

linux下expect环境安装以及简单脚本测试

2016-12-26 17:30 585 查看
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,很实用!

expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装

http://download.chinaunix.net/download/0003000/2845.shtml

tcl版本 8.4.19

http://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz/download

将expect和tcl的软件包下载放到/usr/local/src目录下

(1)解压tcl,进入tcl解压目录,然后进入unix目录进行编译安装

[root@xw4 src]# tar -zvxf tcl8.4.11-src.tar.gz

[root@xw4 src]# cd tcl8.4.11/unix

[root@xw4 unix]# ./configure

[root@xw4 unix]# make && make install

(2)安装expect

[root@xw4 src]# tar -zvxf expect-5.43.0.tar.gz

[root@xw4 src]# cd expect-5.43.0

[root@xw4 expect-5.43.0]# ./configure –with-tclinclude=/usr/local/src/tcl8.4.11/generic –with-tclconfig=/usr/local/lib/

[root@xw4 expect-5.43.0]# make && make install

(3)安装完成后进行测试

[root@xw4 ~]# expect

expect1.1>

expect1.1>

下面结合shell脚本做简单测试:

例1:

从本机自动登录到远程机器192.168.1.200(端口是22,密码是:PASSWORD)

登录到远程机器后做以下几个操作:

1)useradd wangshibo

2)mkdir /opt/test

3) exit自动退出

[root@xw4 tmp]# cat test-ssh.sh

#!/bin/bash
passwd='PASSWORD'
/usr/local/bin/expect <<-EOF
set time 30
spawn ssh -p22 root@192.168.1.201
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#"
send "useradd wangshibo\r"
expect "*#"
send "mkdir /opt/test\r"
expect "*#"
send "exit\r"
interact
expect eof
EOF


[root@xw4 tmp]# sh test.sh

spawn ssh -p22 root@192.168.1.201

root@192.168.1.201’s password:

Last login: Fri Sep 23 16:21:20 2016 from 192.168.1.23

[root@vm-002 ~]# useradd wangshibo

[root@vm-002 ~]# mkdir /opt/test

[root@vm-002 ~]# [root@xw4 tmp]#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux