linux下同时上传文件到多台服务器

试验环境:

Server:192.168.1.2
Client: 192.168.1.3、192.168.1.4

一、SHH密钥生成(server上的操作)

ssh-keygen ##一直回车
ssh-copy-id -i /root/.ssh/id_rsa 192.168.1.3 ##复制密钥文件到远程服务器
ssh-copy-id -i /root/.ssh/id_rsa 192.168.1.4

二、编写脚本 vim remotecopy.sh

#! /bin/sh

while getopts f: OPT; do
case $OPT in
f|+f)
files="$OPTARG $files"
;;
*)
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit 2
esac
done

shift `expr $OPTIND - 1`

if [ "" = "$files" ] ;then
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit
fi

for file in $files
do
if [ ! -f "$file" ] ;then
echo "no hostlist file:$file"
exit
fi
hosts="$hosts `cat $file`"
done

for host in $hosts; do
echo "do $host"
scp $1 root@$host:$2
done

chmod 764 remotecopy.sh

三、建立主机列表文件(就是客户机IP)

vim hostlist
192.168.1.3
192.168.1.4
192.168.1.*      //可以添加N条

四、在server上执行脚本,传送文件。

./remotecopy.sh -f /usr/local/hostlist /usr/local/test /usr/local/

参数说明:
/usr/local/hostlist 主机列表文件路径
/usr/local/test 需要传送的文件
/usr/local/ 传到客户端的位置

相关的文章: