You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
1.3 KiB

#!/usr/bin/env bash
set -eu
synopsis() {
cat << EOF
Usage : `basename $0` [-h] system
EOF
}
help() {
cat << EOF
`basename $0` arrête le système (la sauvegarde est effectuée).
`synopsis`
-h : affiche cette aide
Retourne 1 en cas d'erreur.
EOF
}
usage() {
synopsis
exit 1
}
args() {
local opt
while getopts "h" opt; do
case $opt in
h) help; exit 0;;
?) usage;;
esac
done
shift $(($OPTIND - 1))
[ $# -ne 1 ] && usage
GUEST_NAME="$1"
if echo $GUEST_NAME | grep -q '/'; then
error "$GUEST_NAME est un nom de système invalide"
fi
}
haltSystemTgz() {
local r=0
for i in 1 2 3; do
if vdn-alive $GUEST_NAME; then
echo "Save $GUEST_NAME..."
set +e
vdn-save $GUEST_NAME
r=$((r+$?))
set -e
if [ $? -eq 0 ]; then
break
fi
#sleep 1
fi
done
#sleep 2
if [ $r = 0 ]; then
vdn-kill $GUEST_NAME || error "Échec de l'arrêt de $GUEST_NAME"
else
return 1
fi
#return $r
}
# Programme principal
VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh
args "$@"
loadGuestVars $GUEST_NAME
if [ ! -e $GUEST_PATH ]; then
error "Le système $GUEST_NAME n'existe pas !"
fi
case "$MODE" in
tgz|tgz2) haltSystemTgz;;
cow|direct|overlay) vdn-ssh root@$GUEST_NAME poweroff;;
*) error "Mode : \"$MODE\" invalide !";;
esac