此脚本用于同业务服务器新增节点,同步文件使用
主要使用到的技巧为:
Shell 脚本传递带有空格的参数(正常遇到空格自动断开)
可以通过@命令来处理
即将参数7换成echo${@:7},这样将自动识别到的第7个开始,全部获取到作为最后第7个参数
以下为同步脚本:
#!/bin/bash RSYNC_FILE(){ if [ $# -ge 3 ];then SOURCE_USER="root" SOURCE_IP="$1" SOURCE_PASSWD="$2" SOURCE="$3" DESTINATION="$3" Option=`echo ${@:4}` mkdir -p $3 /usr/bin/expect << EOF spawn rsync -azvcP -e "ssh -p 22" ${Option} ${SOURCE_USER}@${SOURCE_IP}:$SOURCE $DESTINATION set timeout -1 expect { -timeout 60 "yes/no" {send "yes ";exp_continue} "*password" {send "${SOURCE_PASSWD} "} } expect eof EOF #rm -rf $0 else echo Usage: echo sh $0 '"SOURCE_IP"' '"SOURCE_PASSWD"' '"/data/"' echo sh $0 '"SOURCE_IP"' '"SOURCE_PASSWD"' '"/data/www/"' '"--exclude log/* --exclude logs/*"' fi } RSYNC_FILE $1 $2 $3 $4
根据需要修改脚本中root账号及ssh端口,也可加入rm -rf $0,执行完删除自身
脚本使用方法,直接执行即可查看Usage