?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
  
PASSWORD="/etc/rsync/rsync.pass"
USER='rsync'
HOST='66.66.88.88'
#需要同步的模块=>本地路径
MODULE[0]="LiveMeetingServer=>/data/rsync/source/LiveMeetingServer/"
MODULE[1]="nginx-vhost=>/data/rsync/source/nginx-vhost/"
 
#命令参数列表
COMMAND='nginx-vhost(nginx配置)|live-api(未来学堂)'
#失败标志
STOP="[\033[5;31m失败\033[0m]"
#警告标志
WARM="[\033[5;31m警告\033[0m]"
#成功标志
START="[\033[5;32m完成\033[0m]"
 
 
if [ ! -n "$1" ];then
echo -e "缺少参数:$COMMAND {push|pull} $WARM"
exit
fi
 
case $1 in
#nginx-vhost
nginx-vhost)
LIBRARY='nginx-vhost'
if "$2"x = "push"x ];then
 
#-----------------------------------确认是否提交数据 begin
echo -e $WARM
read -r -p "提交数据将同步至所有生产服务器,确认提交 nginx-vhost 数据吗? [y/n] " input
 
case $input in
[yY][eE][sS]|[yY])
 
OLD_IFS="$IFS"
IFS="=>"
arr=(${MODULE[1]})
IFS="$OLD_IFS"
LOG=`rsync -avz ${arr[2]} --password-file=${PASSWORD} ${USER}@${HOST}::${arr[0]}`
echo $LOG
echo -e '推送数据 nginx-vhost ' $START
;;
 
[nN][oO]|[nN])
echo -e "取消操作 nginx-vhost $START"
;;
 
*)
echo -e "参数无效... $WARM"
exit 1
;;
esac
#-----------------------------------确认是否提交数据 end
 
else
 
OLD_IFS="$IFS"
IFS="=>"
arr=(${MODULE[1]})
IFS="$OLD_IFS"
LOG=`rsync -avz --progress --password-file=${PASSWORD} ${USER}@${HOST}::${arr[0]} ${arr[2]}`
echo $LOG
echo -e '拉取数据' $START
 
fi
;;
#LiveMeetingServer
live-api)
LIBRARY='LiveMeetingServer'
if "$2"x = "push"x ];then
 
#-----------------------------------确认是否提交数据 begin
echo -e $WARM
read -r -p "提交数据将同步至所有生产服务器,确认提交 LiveMeetingServer 数据吗? [y/n] " input
 
case $input in
[yY][eE][sS]|[yY])
 
OLD_IFS="$IFS"
IFS="=>"
arr=(${MODULE[0]})
IFS="$OLD_IFS"
LOG=`rsync -avz ${arr[2]} --password-file=${PASSWORD} ${USER}@${HOST}::${arr[0]}`
echo $LOG
echo -e '推送数据 LiveMeetingServer ' $START
;;
 
[nN][oO]|[nN])
echo -e "取消操作 LiveMeetingServer $START"
;;
 
*)
echo -e "参数无效... $WARM"
exit 1
;;
esac
#-----------------------------------确认是否提交数据 end
 
else
 
OLD_IFS="$IFS"
IFS="=>"
arr=(${MODULE[0]})
IFS="$OLD_IFS"
LOG=`rsync -avz --progress --password-file=${PASSWORD} ${USER}@${HOST}::${arr[0]} ${arr[2]}`
echo $LOG
echo -e '拉取数据' $START
 
fi
;;
*)
echo -e "执行的命令无效,可选命令:$COMMAND {push|pull} $WARM"
exit
;;
esac
 
#----------------------------日志处理 begin
#获取当前时间
TIME=`date +"%Y-%m-%d %H:%M:%S"`
#判断日志文件是否存在
if [ ! -f /data/rsync/source/control.log ]; then
#创建日志文件
touch /data/rsync/source/control.log
#设置权限
chmod 600 /data/rsync/source/control.log
 
fi
#引入日志文件
export LOGFILE="/data/rsync/source/control.log"
#----------------------------日志处理 end
 
USER=`w | grep 'bash' | grep -o '[a-z]\+     ' | grep -o '[a-z]\+'`
USERDATA=`finger ${USER}`
#操作记录写入日志
echo -e " ${TIME} - ${LIBRARY}\n ---------------------------------\n${USERDATA}\n ---------------------------------\n${LOG}\n" >> $LOGFILE
echo -e "++++++++++++++++++++++++++++++++++++++++++\n" >> $LOGFILE
 
 
  


---------------------------------------------------------------------------------------------
不忘初心 方得始终!

唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。