时间:2015-04-10 16:31:40 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20150410/44867.html 手机查看 评论 反馈
案例2:批量处理
在需要管理大量的Linux服务器时,可以这样做:
1.host.list
192.168.1.1 22 root abc1
192.168.1.2 22 root abc2
192.168.1.3 22 root abc3
192.168.1.4 22 root abc4
192.168.1.5 22 root abc5
192.168.1.6 22 root abc6
192.168.1.7 22 root abc7
192.168.1.8 22 root abc8
我们把服务器的IP地址、端口号、用户名、密码一起放在host.list文件里,按行排列。
下面来看看脚本文件main.exp
#!/usr/bin/expect -f
set ipaddress [lindex $argv 0]
set port [lindex $argv 1]
set username [lindex $argv 2]
set passwd [lindex $argv 3]
set timeout 30
spawn ssh $ipaddress -p$port -l$username
expect {
“yes/no” { send “yes\r”;exp_continue }
“password:” { send “$passwd\r” }
}
expect -re “\](\$|#) ”
send “bash /root/test.sh \r”
expect -re “\](\$|#) ”
send “exit\r”
来做一个while循环:whi.sh
#!/bin/bash
host=“host.list”
while read line
do
expect main.exp $line
done 《 $host
把以上脚本都赋予执行权限,就可以了。
案例3:scp文件传输
expect -c “
spawn scp root@192.168.1.188:/root/file1.tgz /root
expect {
\”*assword\“ {set timeout 300; send \”abc123456\r\“;}
\”yes/no\“ {send \”yes\r\“; exp_continue;}
}
expect eof
”
同样的原理,也可以做循环进行批量管理,还可以更简化脚本,也不多说明了,有兴趣的同学可以多尝试下。使用expect进行自动输入密码登陆,基本多用于批量管理。也还算方便。关于批量管理有多种方法,可以在主机之间建立ssh信任机制,也可以免密码登陆管理等。还可以使用sshpass(外部命令)这个命令进行带密码在脚本里执行自动输入密码。
上面就是Linux使用expect命令的方法介绍了,本文一共介绍了expect命令的三个操作实例,通过这些实例的练习,你一定能轻松掌握expect命令的用法。
发表评论
共0条
评论就这些咯,让大家也知道你的独特见解
立即评论以上留言仅代表用户个人观点,不代表系统之家立场