shell脚本批量自动分发文件
1、安装expect
yum -y install expect
2、创建iplist.txt文件(要分发的IP地址)
vim iplist.txt 192.168.100.22 192.168.100.23
3、创建pwd.txt(里面包含密码)
vim pwd.txt 123456 123123
4、创建脚本fenfa_file.sh
vim fenfa_file.sh #!/bin/bash echo "拷贝情况如下:" > /root/test.log n=`cat /root/iplist.txt | wc -l` #分发的ip数量 for (( i=1; i<=$n; i++ )) do passwd=`cat /root/pwd.txt|head -$i|tail -1` #第i个IP地址的密码 ip=`cat /root/iplist.txt|head -$i|tail -1` #第i个IP地址 echo $ip /usr/bin/expect <<EOF spawn scp /root/1.txt $ip:/root/ expect "yes/no" {send "yes\n;exp_untinue"} expect "password" {send "$passwd\n"} expect eof EOF if [ $? -eq 0 ];then echo "$ip:成功" >>/root/test.log else echo "$ip:失败" >>/root/test.log fi done
5、执行脚本
[root@server01 ~]# sh fenfa_file.sh 192.168.100.22 spawn scp /root/1.txt 192.168.100.22:/root/ root@192.168.100.22's password: 1.txt 100% 0 0.0KB/s 00:00 192.168.100.23 spawn scp /root/1.txt 192.168.100.23:/root/ root@192.168.100.23's password: 1.txt 100% 0 0.0KB/s 00:00 #第一次分发没有等待是因为在执行时需要输入yes/no来确认是否连接,第二次分发会在输入密码那里等待几秒是因为第二次是直接输入密码,不需要在输入yes/no
6、查看test.log分发日志
[root@server01 ~]# cat test.log 拷贝情况如下: 192.168.100.22:成功 192.168.100.23:成功
7、如果密码是相同的 可以把密码指定到变量里面进行执行
#!/bin/bash echo "拷贝情况如下:" > /root/test.log n=`cat /root/iplist.txt | wc -l` for (( i=1; i<=$n; i++ )) do #passwd=`cat /root/pwd.txt|head -$i|tail -1` passwd="123456" ip=`cat /root/iplist.txt|head -$i|tail -1` echo $ip /usr/bin/expect <<EOF spawn scp /root/1.txt $ip:/root/ expect "yes/no" {send "yes\n;exp_untinue"} expect "password" {send "$passwd\n"} expect eof EOF if [ $? -eq 0 ];then echo "$ip:成功" >>/root/test.log else echo "$ip:失败" >>/root/test.log fi done
******************************我也想难过的时候到海边走走,可是我的城市没有海。******************************