This file is indexed.

/usr/sbin/ocs-related-srv is in clonezilla 3.21.13-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#!/bin/bash
# Author: Steven Shiau <steven _at_ nchc org tw>
# License: GPL 
# 
# Param: 
# $1: IP address of the client
# $2: nothing or off, if it's off, we won't turn on hardware detecting for client $1

# Load DRBL setting and functions
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"

. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions
#
prog="$(basename $0)"

check_if_root
check_if_run_in_drbl_server $0

#
USAGE() {
    echo "Put or remove Clonezilla related services to client's rc1.d"
    echo "Usage:"
    echo "$prog [OPTION] {-n|--node-ip IP} {put|remove}"
    echo 
    echo "Options:"
    echo "-n, --node-ip  IP    Specify the client(s), using IP address(es)."
    echo "-d, --hw-detect {on|off}    Use off to skip the hardware detecting (kudzu, discover...) service in the clients."
    echo
    echo "Example:"
    echo "To put Clonezilla related services to client's (192.168.1.1) rc1.d, hardware detecting is put also, use:"
    echo "$prog -n 192.168.1.1 put"
}

# Setting:
# summarize the services, this will be used when ocs is stopped.
# ocs-ssh is the ssh service we copy from the system and modify to what we want. We only use it in rc1.d. Therefore we do not want to affect that for all run levels.
non_rc1_service="portmap rpcbind nfslock netfs sshd kudzu harddrake ocs-run mountall.sh mountnfs.sh mountnfs.sh ssh discover hwscan arm-wol ocs-ssh"

# Parse command-line options
while [ $# -gt 0 ]; do
  case "$1" in
    -n|--node-ip)
	shift
        if [ -z "$(echo $1 |grep ^-.)" ]; then
          # skip the -xx option, in case 
	  node_ip="$1"
	  shift
        fi
	[ -z "$node_ip" ] && USAGE && exit 1
	;;
    -d|--hw-detect)
	shift
        if [ -z "$(echo $1 |grep ^-.)" ]; then
          # skip the -xx option, in case 
	  hw_detect="$1"
	  shift
        fi
	[ -z "$hw_detect" ] && USAGE && exit 1
	;;
    -v|--verbose) verbose="on"; shift;;
    -*) echo "${0}: ${1}: invalid option" >&2
        USAGE >& 2
        exit 2 ;;
    *)  break ;;
  esac
done

action="$1"

[ -z "$action" ] && USAGE && exit 1

#
deploy_ocs_related_srv_in_client() {
# prepare some services
# Note!!! This functions must be consistent with "non_rc1_service" in stop()
# S00single (RH), S20single (Debian), so we have to put these services
# before 20.
if [ ! -d "$drblroot/$node_ip/$RCX_ROOTDIR/rc1.d" ]; then
   echo "No such directory $drblroot/$node_ip/$RCX_ROOTDIR/rc1.d!"
   echo "Program terminated!"
   exit 1
fi
#
cd $drblroot/$node_ip/$RCX_ROOTDIR/rc1.d 
# RH-like: nfslock, netfs...
# Debian: ssh, nfs-common, mountall.sh...
# SUSE: nfs, but nfs is server for RH-like...
if [ -e /etc/debian_version ]; then
  # Debian
  [ -x $RCX_REL_INITD/portmap ] && ln -fs $RCX_REL_INITD/portmap S13portmap 
  [ -x $RCX_REL_INITD/rpcbind ] && ln -fs $RCX_REL_INITD/rpcbind S13rpcbind
  [ -x $RCX_REL_INITD/nfs-common ] && ln -fs $RCX_REL_INITD/nfs-common S15nfs-common
  if [ -x $RCX_REL_INITD/ssh ]; then
    if grep -q check_for_upstart $RCX_REL_INITD/ssh; then
    # For Ubuntu >= 13.10, it will check if it's upstart mechanism. If it is, then ssh won't be started here. However, we want it to be started in rc1.d.
    # We have to changed the name from ssh to different name. Otherwise if it's still ssh, /lib/lsb/init-functions.d/01-upstart-lsb will quit if there is a same name service in /etc/init/ (for upstart).
    cp -a $RCX_REL_INITD/ssh S16ocs-ssh
    line="$(LC_ALL=C grep -n -Ew "if init_is_upstart; then" S16ocs-ssh | awk -F":" '{print $1}')"
    if [ -n "$line" ]; then
      line_2_mod="$((line + 1))"
      perl -pi -e "if ($((line_2_mod))..$((line_2_mod))) {s/^([[:space:]]*)exit.*/\$1true; #commented by DRBL/g}" S16ocs-ssh
    fi
    else
      ln -fs $RCX_REL_INITD/ssh S16ocs-ssh
    fi
  fi
  [ -x $RCX_REL_INITD/mountall.sh ] && ln -fs $RCX_REL_INITD/mountall.sh S17mountall.sh
  [ -x $RCX_REL_INITD/mountvirtfs ] && ln -fs $RCX_REL_INITD/mountvirtfs S17mountvirtfs
  [ -x $RCX_REL_INITD/mountnfs.sh ] && ln -fs $RCX_REL_INITD/mountnfs.sh S17mountnfs.sh
  [ -x $RCX_REL_INITD/arm-wol ] && ln -fs $RCX_REL_INITD/arm-wol S17arm-wol
  # To avoid single to be run before ocs-run, we force to make single as the last one
  if [ ! -e S99single ]; then
    mv -f S*single S99single
  fi
elif [ -e /etc/SuSE-release ]; then
  # SuSE
  [ -x $RCX_REL_INITD/kbd ] && ln -fs $RCX_REL_INITD/kbd S12kbd
  [ -x $RCX_REL_INITD/portmap ] && ln -fs $RCX_REL_INITD/portmap S13portmap 
  [ -x $RCX_REL_INITD/rpcbind ] && ln -fs $RCX_REL_INITD/rpcbind S13rpcbind
  [ -x $RCX_REL_INITD/nfs ] && ln -fs $RCX_REL_INITD/nfs S15nfs
  [ -x $RCX_REL_INITD/sshd ] && ln -fs $RCX_REL_INITD/sshd S16sshd
  [ -x $RCX_REL_INITD/arm-wol ] && ln -fs $RCX_REL_INITD/arm-wol S17arm-wol
else
  # RH-like
  [ -x $RCX_REL_INITD/portmap ] && ln -fs $RCX_REL_INITD/portmap S13portmap 
  # From FC7, it's rpcbind instead of portmap
  [ -x $RCX_REL_INITD/rpcbind ] && ln -fs $RCX_REL_INITD/rpcbind S13rpcbind
  [ -x $RCX_REL_INITD/nfslock ] && ln -fs $RCX_REL_INITD/nfslock S14nfslock 
  # From Mandriva 2008.1, it's nfs-common instead of nfslock
  [ -x $RCX_REL_INITD/nfs-common ] && ln -fs $RCX_REL_INITD/nfs-common S14nfs-common
  [ -x $RCX_REL_INITD/netfs ] && ln -fs $RCX_REL_INITD/netfs S15netfs 
  [ -x $RCX_REL_INITD/sshd ] && ln -fs $RCX_REL_INITD/sshd S16sshd
  [ -x $RCX_REL_INITD/arm-wol ] && ln -fs $RCX_REL_INITD/arm-wol S17arm-wol
fi

# we need kudzu or harddrake so that for SCSI devices, the driver can be loaded auto.
if [ "$hw_detect" != "off" ]; then
  for ihw in kudzu harddrake discover hwscan; do
    if [ "$ihw" = "kudzu" ]; then
      if [ -x "$RCX_REL_INITD/kudzu" ]; then
        # We have to modify kudzu, thereforce we can not use link since it will affect those services in rc[3-5].d
        # The reason we have to modify is because kudzu will force to change to rc5.d if /var/run/Xconfig is found. But actually for Clonezilla we need to saty in rc1.d, we can not change to rc5 since S19ocs-run will be run later (S19)
	# In kudzu, comment these 2 lines:
	#    grep -q "^id:5:initdefault:" /etc/inittab && telinit 5
	# and
	#    telinit 3
	# We also rename it as kudzu-drbl to show it's modified.
        cp -a $RCX_REL_INITD/kudzu S05kudzu-drbl
	perl -pi -e "s|(^[[:space:]]*)(.*id:5:initdefault:.*telinit 5)|\$1# \$2 # Commented by DRBL $prog|g" S05kudzu-drbl
	perl -pi -e "s|(^[[:space:]]*)(telinit 3)|\$1# \$2 # Commented by DRBL $prog|g" S05kudzu-drbl
      fi
    else
      [ -x "$RCX_REL_INITD/$ihw" ] && ln -fs $RCX_REL_INITD/$ihw S05${ihw}
    fi
  done
fi
} # end of deploy_ocs_related_srv_in_client

#
clean_ocs_related_srv_in_client() {
  # HOST_OPTION_MODIFY: modified since we specify hosts.
  # clean the services in rc1.d which are specially for drbl-ocs
  # The service name is both for RH-like, Debian or SuSE
  for inon in $non_rc1_service; do
    rm -f $drblroot/$node_ip/$RCX_ROOTDIR/rc1.d/S[0-9][0-9]${inon}
  done
} # end of clean_ocs_related_srv_in_client


#
case "$action" in
  "put")
     [ -n "$verbose" ] && echo "Putting clonezilla related services to client ($node_ip) rc1.d/ ..."
     deploy_ocs_related_srv_in_client;;
  "remove")
     [ -n "$verbose" ] && echo "Removing clonezilla related services from client ($node_ip) rc1.d/ ..."
     clean_ocs_related_srv_in_client;;
esac

exit 0