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

 

 

客户端

 

  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格式的, 然后存盘退出。
再次运行脚本。

 

posted @ 2017-07-13 10:37  扶苏公子x  阅读(1235)  评论(0编辑  收藏  举报