批量复制文件 多台服务器,[shell实例]——用脚本实现向多台服务器批量复制文件(nmap、scp)...

练习环境:

(1)所有服务器将防火墙和selinux关闭

(2)所有服务器的root密码设置为aixocm

(3)所有服务器都为10.0.100.*网段,并保证能够和其它主机通信

(4)所有服务器确保sshd服务已经启动(开放默认的22端口)

脚本要求实现:

将本机/etc目录下以conf为扩展名的文件打包压缩为tar.bz2,然后将此文件复制一份到10.0.100.1-->10.0.100.254地址段上所有开启的主机,具体路径为/tmp/sjjy/文件。在使用scp复制时无需手动输入密码。

脚本的大概思路:

(1)Tar_etc( )函数:实现对/etc下所有*.conf目录的打包,并判断是否打包成功。

(2)Nmap_ip( )函数:实现扫描已开启的主机。用nmap命令实现。并将这些主机IP写到/mydate/ip.txt文件中。

(3)Scp_ip( )函数:实现将压缩包发送到各个主机的指定目录下。 利用了#expect命令来实现的输入。

#!/bin/bash

#============================================

#function-->Tar_etc 打包/etc/*.conf下的文件

#============================================

Tar_etc()

{

tar jcvf /tmp/lyj.tar.bz2 /etc/*.conf &> /dev/null

if [ $? -eq 0 ]

then

echo "压缩包打包完成"

else

echo "压缩包打包失败请检查"

fi

}

#=========================================

#function-->Nmap_ip 扫描网段内开启的主机

#=========================================

Nmap_ip()

{

[ -f /mydate/ip.txt ]

if [ $? -eq 0 ]

then

cat /dev/null >/mydate/ip.txt

else

touch /mydate/ip.txt

fi

nmap -n -sP 10.0.100.1-254 | grep 10.0.100 | awk ‘{print $5}‘ >/mydate/ip.txt

}

#======================================

#function-->Scp_ip 复制文件到各个主机

#======================================

Scp_ip()

{

cat /mydate/ip.txt | while read line

do

(

/usr/bin/expect << EOF

set time 20

spawn scp /tmp/lyj.tar.bz2 root@$line:/tmp/sjjy

expect {

"*yes/no*"

{ send "yes\r";exp_continue }

"*password:"

{ send "aixocm\r"}

}

expect eof

EOF

) &>/dev/null

if [ $? -eq 0 ]

then

echo "复制文件到$line成功!"

else

echo "复制文件到$line失败!"

fi

done

}

Tar_etc

Nmap_ip

Scp_ip

原文:http://www.cnblogs.com/snsdzjlz320/p/5620597.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值