当前位置:   article > 正文

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

linux文件拷贝脚本

练习环境:

(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 [email protected]$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

时间: 06-26

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44196
推荐阅读
相关标签
  

闽ICP备14008679号