批量分发文件的脚本
#!/bin/bash
#功能:批量分发文件
#自动应答,本脚本不需要免密,但是控制节点要安装有experct
#yum install expect -y
#脚本有两个方法,默认使用方法1,若是要使用方法2,请去注释开启(记得要把方法1注释了)
means=mean1
#means=mean2
file1=$1
file2=$2
#先判断输入
if [ $# -ne 2 ]
then
echo "Usage: scpfile_all_host local_file remot_file "
echo "正确用法:sh cpfile.sh [文件名] [目录名]"
exit 1
fi
if [ ! -e $1 ]
then
echo -e "\033[35m Is not file \033[0m"
exit 1
fi
#方法1
#适合所有的服务器都是统一的一个密码
mean1(){
#自动应答,目标主机的密码
password=123456
for i in `cat ./hostip.txt`
do
echo -e '\E[41m 拷贝到'${i}' \E[0m'
/usr/bin/expect << EOF
set timeout 30
spawn scp ${file1} ${i}:${file2}
expect {
"*password*" { send "${password}\n" }
}
expect eof
EOF
done
}
#方法2
#适合服务器群有多个不同的密码
#在hostip.txt文件里写上账号和对应的密码在一行,空格分隔
#如: 192.168.56.91 123456
mean2(){
cat ./hostip.txt | while read line;do
ip=`echo $line | awk '{print $1}'`
password=`echo $line | awk '{print $2}'`
echo -e '\E[41m 拷贝到'${ip}' \E[0m'
/usr/bin/expect << EOF
set timeout 30
spawn scp ${file1} ${ip}:${file2}
expect {
"*password*" { send "${password}\n" }
}
expect eof
EOF
done
}
#应用的方法
${means}

浙公网安备 33010602011771号