欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  运维

rsync随机启动脚本

程序员文章站 2022-03-17 08:35:01
...
服务端

 

rsync随机启动脚本
 1 #!/bin/sh
 2 # chkconfig: 2345 21 60
 3 # description: Saves and restores system entropy pool for \
 4 #create by xiaohu
 5 #2014.06.02
 6 #This script is the Rsync service script
 7 . /etc/init.d/functions
 8 case "$1" in
 9   start)
10         echo "rsync is starting"
11         /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
12         sleep 2
13         myport=`netstat -lnt|grep 873|wc -l`
14         if [ $myport -eq 2 ]
15         then
16         action "rsync start"   /bin/true
17         else
18         action "rsync start"   /bin/false
19         fi
20         ;;
21   stop)
22         echo "rsync is stoping"
23         myport=`netstat -lnt|grep 873|wc -l`
24         if [ $myport -eq 2 ]
25         then 
26         killall rsync &>/dev/null
27         sleep 2
28         killall rsync &>/dev/null
29         sleep 1
30         fi
31         myport=`netstat -lnt|grep 873|wc -l`
32         if [ $myport -ne 2 ]
33         then
34         action "rsync stop"   /bin/true
35         else
36         action "rsync stop"   /bin/false
37         fi
38         ;;
39   restart)
40         if [ `netstat -lnt|grep 873|wc -l` -eq 0 ]
41         then
42         /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
43         sleep 2
44         myport=`netstat -lnt|grep 873|wc -l`
45         if [ $myport -eq 2 ]
46         then
47         action "rsync restart"   /bin/true
48         else
49         action "rsync restart"   /bin/false
50         exit
51         fi
52         else
53         killall rsync &>/dev/null
54         sleep 2
55         killall rsync &>/dev/null
56         sleep 1
57         /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
58         sleep 2
59         myport=`netstat -lnt|grep 873|wc -l`
60         if [ $myport -eq 2 ]
61         then
62         action "rsync restart"   /bin/true
63         else
64         action "rsync restart"   /bin/false
65         fi
66         fi
67         ;;
68   status)
69         myport=`netstat -lnt|grep 873|wc -l`
70         if [ $myport -eq 2 ]
71         then
72         echo  "rsync is running"
73         else
74         echo "rsync is stoped"
75         fi
76         ;;
77   *)
78         echo $"Usage: $0 {start|stop|status|restart}"
79         ;;
80 esac
View Code

 

 

客户端

 

rsync随机启动脚本
  1 #! /bin/sh
  2 
  3 ### BEGIN INIT INFO
  4 # Provides:          rsyncd
  5 # Required-Start:    $remote_fs $syslog
  6 # Required-Stop:     $remote_fs $syslog
  7 # Should-Start:      $named autofs
  8 # Default-Start:     2 3 4 5
  9 # Default-Stop:      
 10 # Short-Description: fast remote file copy program daemon
 11 # Description:       rsync is a program that allows files to be copied to and
 12 #                    from remote machines in much the same way as rcp.
 13 #                    This provides rsyncd daemon functionality.
 14 ### END INIT INFO
 15 
 16 set -e
 17 
 18 # /etc/init.d/rsync: start and stop the rsync daemon
 19 
 20 DAEMON=/usr/bin/rsync
 21 RSYNC_ENABLE=false
 22 RSYNC_OPTS=''
 23 RSYNC_DEFAULTS_FILE=/etc/default/rsync
 24 RSYNC_CONFIG_FILE=/etc/rsyncd.conf
 25 RSYNC_PID_FILE=/var/run/rsync.pid
 26 RSYNC_NICE_PARM=''
 27 RSYNC_IONICE_PARM=''
 28 
 29 test -x $DAEMON || exit 0
 30 
 31 . /lib/lsb/init-functions
 32 
 33 if [ -s $RSYNC_DEFAULTS_FILE ]; then
 34     . $RSYNC_DEFAULTS_FILE
 35     case "x$RSYNC_ENABLE" in
 36     xtrue|xfalse)    ;;
 37     xinetd)        exit 0
 38             ;;
 39     *)        log_failure_msg "Value of RSYNC_ENABLE in $RSYNC_DEFAULTS_FILE must be either 'true' or 'false';"
 40             log_failure_msg "not starting rsync daemon."
 41             exit 1
 42             ;;
 43     esac
 44     case "x$RSYNC_NICE" in
 45     x[0-9]|x1[0-9])    RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;
 46     x)        ;;
 47     *)        log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);"
 48             log_warning_msg "ignoring RSYNC_NICE now."
 49             ;;
 50     esac
 51     case "x$RSYNC_IONICE" in
 52     x-c[123]*)    RSYNC_IONICE_PARM="$RSYNC_IONICE";;
 53     x)        ;;
 54     *)        log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;"
 55             log_warning_msg "ignoring RSYNC_IONICE now."
 56             ;;
 57     esac
 58 fi
 59 
 60 export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
 61 
 62 rsync_start() {
 63     if [ ! -s "$RSYNC_CONFIG_FILE" ]; then
 64         log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE"
 65         log_end_msg 1
 66         exit 0
 67     fi
 68     # See ionice(1)
 69     if [ -n "$RSYNC_IONICE_PARM" ] && [ -x /usr/bin/ionice ] &&
 70         /usr/bin/ionice "$RSYNC_IONICE_PARM" true 2>/dev/null; then
 71         /usr/bin/ionice "$RSYNC_IONICE_PARM" -p$$ > /dev/null 2>&1
 72     fi
 73     if start-stop-daemon --start --quiet --background \
 74         --pidfile $RSYNC_PID_FILE --make-pidfile \
 75         $RSYNC_NICE_PARM --exec $DAEMON \
 76         -- --no-detach --daemon --config "$RSYNC_CONFIG_FILE" $RSYNC_OPTS
 77     then
 78         rc=0
 79         sleep 1
 80         if ! kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
 81             log_failure_msg "rsync daemon failed to start"
 82             rc=1
 83         fi
 84     else
 85         rc=1
 86     fi
 87     if [ $rc -eq 0 ]; then
 88         log_end_msg 0
 89     else
 90         log_end_msg 1
 91         rm -f $RSYNC_PID_FILE
 92     fi
 93 } # rsync_start
 94 
 95 
 96 case "$1" in
 97   start)
 98     if "$RSYNC_ENABLE"; then
 99         log_daemon_msg "Starting rsync daemon" "rsync"
100         if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
101         log_progress_msg "apparently already running"
102         log_end_msg 0
103         exit 0
104         fi
105             rsync_start
106         else
107             if [ -s "$RSYNC_CONFIG_FILE" ]; then
108                 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
109             fi
110     fi
111     ;;
112   stop)
113     log_daemon_msg "Stopping rsync daemon" "rsync"
114     start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE
115     log_end_msg $?
116     rm -f $RSYNC_PID_FILE
117     ;;
118 
119   reload|force-reload)
120     log_warning_msg "Reloading rsync daemon: not needed, as the daemon"
121     log_warning_msg "re-reads the config file whenever a client connects."
122     ;;
123 
124   restart)
125     set +e
126     if $RSYNC_ENABLE; then
127         log_daemon_msg "Restarting rsync daemon" "rsync"
128         if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
129         start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE || true
130         sleep 1
131         else
132         log_warning_msg "rsync daemon not running, attempting to start."
133             rm -f $RSYNC_PID_FILE
134         fi
135             rsync_start
136         else
137             if [ -s "$RSYNC_CONFIG_FILE" ]; then
138                 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
139             fi
140     fi
141     ;;
142 
143   status)
144     status_of_proc -p $RSYNC_PID_FILE "$DAEMON" rsync
145     exit $?    # notreached due to set -e
146     ;;
147   *)
148     echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}"
149     exit 1
150 esac
151 
152 exit 0
View Code

 

 


开机自动启动rsync

1. 扔脚本进去/etc/init.d/


2. 授权
chmod +x rsync


3. 一旦抛出:binsh^M错误就执行编码改写
设置dos统一编码
(请看rsync脚本抛出binsh^M bad interpreter文档)


4. 添加到服务
chkconfig --add ningx


5. 随机启动脚本带动rsync开机启动
chkconfig --level 2345 rsync on

 

 


 

执行脚本时发现如下错误:
/bin/sh^M: bad interpreter: 没有那个文件或目录

错误分析:
因为操作系统是windows,我在windows下编辑的脚本,所以有可能有不可见字符。
脚本文件是DOS格式的, 即每一行的行尾以\n\r来标识, 其ASCII码分别是0x0D, 0x0A.

可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的

解决方法:
vim filename
然后用命令
:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的。


然后用
:set ff=unix #把它强制为unix格式的, 然后存盘退出。
再次运行脚本。

 

以上就是rsync随机启动脚本的详细内容,更多请关注其它相关文章!