/usr/sbin/ocs-live-get-img is in clonezilla 3.27.16-2.
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 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 | #!/bin/bash
# License: GPL
# Author: Steven Shiau <steven _at_ clonezilla org>
# Description: Program to restore an image by receiving multicast packets from server
# What will be done in this program:
# 1. Get a tarball about the image which contains all files in the image except file system image files.
# 3. Get a script about the full command to start restoring.
#
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
# Load the config in ocs-live.conf. This is specially for Clonezilla live. It will overwrite some settings of /etc/drbl/drbl-ocs.conf, such as $DIA...
[ -e "/etc/ocs/ocs-live.conf" ] && . /etc/ocs/ocs-live.conf
# Functions
USAGE() {
echo "$ocs - To start restoring an image from multicast server by Clonezilla"
echo "Usage:"
echo "To run $ocs:"
echo "$ocs [OPTION] [SERVER]"
echo "This program is specially used in Clonezilla live to start restoring an image with multicast packets in clients."
echo "Options:"
echo "-b, --batch-mode Run in batch mode"
echo "SERVER is the multicast server IP address or FQDN, e.g. 192.168.25.111..."
echo "If no SERVER is specified, a dialog menu will be shown."
echo "Ex:"
echo "To start restoring an image in client machine from multicaast feeding server 192.168.25.111, run"
echo " $ocs 192.168.25.111"
echo
} # end of USAGE
#
task_run_restoring() {
network_config_if_necessary
# No need for this. We have a tarball solution.
#if ! mountpoint $ocsroot >/dev/null 2>&1; then
# prep-ocsroot
#fi
if [ "$cast_srv" = "ask_user" ]; then
# Ask about multicast feeding server
TMP="$(mktemp /tmp/ocs-cast-srv.XXXXXX)"
trap "[ -f "$TMP" ] && rm -f $TMP" HUP INT QUIT TERM EXIT
srv_default="$(LC_ALL=C route -n | grep "^0.0.0.0" | awk -F" " '{print $2}')"
ask_="true"
while [ "$ask_" = "true" ]; do
$DIA --backtitle "$msg_nchc_free_software_labs" --title \
"Multicast server" --inputbox "$msg_ip_address_or_FQDN_of_server: Multicast server" \
0 0 $srv_default $DIA_ESC \
2> $TMP
cast_srv="$(cat $TMP)"
if [ -z "$cast_srv" ]; then
$DIA --backtitle "$msg_nchc_free_software_labs" --title "$msg_nchc_clonezilla" \
--yesno "$msg_you_must_input_a_server\n$msg_do_u_want_to_do_it_again" 0 0
ans_="$?"
case "$ans_" in
0) # yes is chosen
ask_="true";;
1) # no is chosen
echo "$msg_program_stop!" | tee -a ${OCS_LOGFILE}
[ -f "$TMP" ] && rm -f $TMP
exit 1;;
esac
else
# Got the one we want
ask_="false"
fi
done
[ -f "$TMP" ] && rm -f $TMP
fi
if [ -z "$cast_srv" ]; then
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "No Clonezilla live lite server was assigned or found!" | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop!" | tee -a ${OCS_LOGFILE}
exit 1
fi
echo "Multicast server is: $cast_srv" | tee -a ${OCS_LOGFILE}
# Get info from server then restoring
# Part 1: get config file
rm -f /tmp/ocs-client-run.conf
get_run_conf="wget -P /tmp/ http://$cast_srv/ocs-client-run.conf"
echo "Running: $get_run_conf"
eval $get_run_conf | tee -a ${OCS_LOGFILE}
if [ -e "/tmp/ocs-client-run.conf" ]; then
echo "The content of /tmp/ocs-client-run.conf:" >> ${OCS_LOGFILE}
echo $msg_delimiter_star_line >> ${OCS_LOGFILE}
cat /tmp/ocs-client-run.conf >> ${OCS_LOGFILE}
echo $msg_delimiter_star_line >> ${OCS_LOGFILE}
else
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "$msg_failed_to_get_file_from_this_URL: http://$cast_srv/ocs-client-run.conf" | tee -a ${OCS_LOGFILE}
echo "$msg_program_stop." | tee -a ${OCS_LOGFILE}
[ "$save_restore_error_log" = "yes" ] && copy_error_log
fi
# get pseudo_img and ocs_sr_opt
pseudo_img=""
img_prefix=""
ocs_sr_opt=""
. /tmp/ocs-client-run.conf
if [ -z "$pseudo_img" ]; then
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "No pseudo_img was assigned in /tmp/ocs-client-run.conf!" | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop" | tee -a ${OCS_LOGFILE}
exit 1
fi
if [ -z "$ocs_sr_opt" ]; then
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "No ocs_sr_opt was assigned in /tmp/ocs-client-run.conf!" | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop" | tee -a ${OCS_LOGFILE}
exit 1
fi
[ -z "$img_prefix" ] && img_prefix="ocs-img"
# Part 2: get pseudo image file
echo "Preparing the image info..." | tee -a ${OCS_LOGFILE}
rm -f /tmp/$pseudo_img | tee -a ${OCS_LOGFILE}
wget -P /tmp/ http://$cast_srv/$pseudo_img | tee -a ${OCS_LOGFILE}
if [ ! -e /tmp/$pseudo_img ]; then
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "Failed to retreive $pseudo_img from http://$cast_srv/." | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop" | tee -a ${OCS_LOGFILE}
exit 1
fi
if [ -d "$/tmp/${img_prefix}" ]; then
# If image already exists in /tmp, create a random dir.
image="$(mktemp -d /tmp/${img_prefix}.XXXXXX)"
else
image="/tmp/${img_prefix}"
mkdir -p $image
fi
tar -xJf /tmp/$pseudo_img -C $image | tee -a ${OCS_LOGFILE}
if [ -d "$image/btzone" ]; then
mkdir -p /tmp/btzone/$(basename $image) | tee -a ${OCS_LOGFILE}
mv $image/btzone/*.torrent /tmp/btzone/$(basename $image) | tee -a ${OCS_LOGFILE}
fi
# Run restoring
# Before running, replace the new created image name
ocs_sr_opt="$(echo $ocs_sr_opt | sed -r -e "s/ocs_lite_pseudo_name/$(basename $image)/g")"
if [ -n "$(ls -A $image 2>/dev/null)" ]; then
echo "Starting restoring..." | tee -a ${OCS_LOGFILE}
ocs-sr -os $cast_srv $ocs_sr_opt
else
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "Failed to find the correct pseudo image dir $image" | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop" | tee -a ${OCS_LOGFILE}
exit 1
fi
} # end of task_run_restoring
####################
### Main program ###
####################
ocs_file="$0"
ocs=`basename $ocs_file`
OCS_LOGFILE="/var/log/${ocs}.log"
#
while [ $# -gt 0 ]; do
case "$1" in
-b|--batch) ocs_batch_mode="on"; shift;;
-v|--verbose)
verbose="on"
shift;;
-*) echo "${0}: ${1}: invalid option" >&2
USAGE >& 2
exit 2 ;;
*) break ;;
esac
done
cast_srv="$1"
[ -z "$cast_srv" ] && cast_srv="ask_user"
#
check_if_root
check_if_in_clonezilla_live
ask_and_load_lang_set
# check DIA
check_DIA_set_ESC $DIA
mkdir -p $ocs_log_dir
ocs_log_rotate $OCS_LOGFILE
# Check if run on clonezilla live lite server
if [ -e "/var/www/html/img-wo-fs.tar.xz" -a -e "/var/www/html/ocs-client-run.conf" ]; then
[ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
echo "$msg_client_program_is_run_on_lite_server" | tee -a ${OCS_LOGFILE}
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo -n "$msg_are_u_sure_u_want_to_continue (y/N) " | tee -a ${OCS_LOGFILE}
read continue_confirm_ans
case "$continue_confirm_ans" in
y|Y|[yY][eE][sS])
echo "$msg_let_me_ask_you_again."
echo -n "$msg_are_u_sure_u_want_to_continue (y/N) " | tee -a ${OCS_LOGFILE}
read confirm_ans_again
case "$confirm_ans_again" in
y|Y|[yY][eE][sS])
echo "$msg_ok_let_do_it" | tee -a ${OCS_LOGFILE}
;;
*)
echo "$msg_program_stop." | tee -a ${OCS_LOGFILE}
copy_error_log
exit 1
esac
;;
*)
echo "$msg_program_stop." | tee -a ${OCS_LOGFILE}
# Saving mode, always copy error log to image dir.
copy_error_log
exit 1
esac
fi
#
task_run_restoring
|