implémenter l'option -a
changer les répertoires renommer crontab en uscrontab dans le source
This commit is contained in:
parent
acb281dac6
commit
c612c3c5a1
|
@ -74,11 +74,12 @@ etitle "Installation de /etc/init.d/openvz-fix-etchosts" \
|
|||
"$scriptdir/../init.d/install-openvz-fix-etchosts"
|
||||
|
||||
etitle "Installation des répertoires pour uscrontab"
|
||||
if mkdir -p /var/uscrontab/crontabs; then
|
||||
chmod 1733 /var/uscrontab/crontabs
|
||||
else
|
||||
eerror "Impossible de créer le répertoire /var/uscrontab/crontabs"
|
||||
fi
|
||||
mkdir -p /var/uscrontab/users &&
|
||||
chmod 1733 /var/uscrontab/users ||
|
||||
eerror "Impossible de créer le répertoire /var/uscrontab/users"
|
||||
mkdir -p /var/uscrontab/users.d &&
|
||||
chmod 1733 /var/uscrontab/users.d ||
|
||||
eerror "Impossible de créer le répertoire /var/uscrontab/users.d"
|
||||
eend
|
||||
|
||||
exit 0
|
||||
|
|
79
uscrontab
79
uscrontab
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||
urequire DEFAULTS crontab
|
||||
urequire DEFAULTS crontab install
|
||||
|
||||
function display_help() {
|
||||
uecho "$scriptname: lancer une suite de commande en respectant une planification de type cron
|
||||
|
@ -202,7 +202,7 @@ OPTIONS
|
|||
n'est spécifié, éditer $USCRONTAB_USERFILE
|
||||
-a, --add XXX non implémenté
|
||||
Installer un script uscrontab dans le répertoire approprié. L'argument
|
||||
doit être de la forme [[name:]/path/to/uscrontab]
|
||||
doit être de la forme [name:]/path/to/uscrontab
|
||||
Si name n'est pas spécifié, le nom de base du fichier spécifié est
|
||||
utilisé. Si name est vide ou vaut \$USER (soit $USER en l'occurence),
|
||||
copier le fichier spécifié vers le chemin $USCRONTAB_USERFILE
|
||||
|
@ -286,8 +286,8 @@ USCRONTAB_CTLINE="* * * * * $script"
|
|||
USCRONTAB_LOCKDELAY=8
|
||||
USCRONTAB_STOPEC=101
|
||||
USCRONTAB_BASEDIR=/var/uscrontab
|
||||
USCRONTAB_USERFILE="$USCRONTAB_BASEDIR/crontabs/$USER"
|
||||
USCRONTAB_USERDIR="$USCRONTAB_BASEDIR/$USER.d"
|
||||
USCRONTAB_USERFILE="$USCRONTAB_BASEDIR/users/$USER"
|
||||
USCRONTAB_USERDIR="$USCRONTAB_BASEDIR/users.d/$USER"
|
||||
USCRONTAB_USER="$USCRONTAB_BASEDIR/$USER"
|
||||
|
||||
action=run
|
||||
|
@ -312,42 +312,51 @@ parse_opts "${PRETTYOPTS[@]}" \
|
|||
--force-ctnow: __CTRESOLVE_CTNOW= \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
crontab="$1"; shift
|
||||
uscrontab="$1"; shift
|
||||
|
||||
if [ "$action" == "edit" ]; then
|
||||
if [ -z "$crontab" ]; then
|
||||
if [ -z "$uscrontab" ]; then
|
||||
basedir="$(dirname "$USCRONTAB_USERFILE")"
|
||||
[ -d "$basedir" ] || die "$basedir: ce répertoire n'existe pas. Vérifiez l'installation de nutools"
|
||||
crontab="$USCRONTAB_USERFILE"
|
||||
uscrontab="$USCRONTAB_USERFILE"
|
||||
fi
|
||||
enote "Edition de $crontab"
|
||||
if [ ! -f "$crontab" ]; then
|
||||
touch "$crontab" || die
|
||||
chmod 640 "$crontab"
|
||||
enote "Edition de $uscrontab"
|
||||
if [ ! -f "$uscrontab" ]; then
|
||||
touch "$uscrontab" || die
|
||||
chmod 640 "$uscrontab"
|
||||
fi
|
||||
"${EDITOR:-vi}" "$crontab" || die
|
||||
"${EDITOR:-vi}" "$uscrontab" || die
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "add" ]; then
|
||||
ewarn "XXX non implémenté"
|
||||
[ -n "$uscrontab" ] || die "Vous devez spécifier le fichier à installer"
|
||||
if [[ "$uscrontab" == *:* ]]; then
|
||||
splitfsep2 "$uscrontab" : name uscrontab
|
||||
[ -f "$uscrontab" ] || die "$uscrontab: fichier introuvable"
|
||||
else
|
||||
name="$(basename "$uscrontab")"
|
||||
fi
|
||||
dest="$(get_usercrontab "$name")"
|
||||
|
||||
copy_update_ask "$uscrontab" "$dest"
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "remove" ]; then
|
||||
crontab="$(get_usercrontab "$crontab")"
|
||||
if [ -f "$crontab" ]; then
|
||||
ask_yesno "Voulez-vous supprimer le fichier $crontab?" C || die
|
||||
enote "Suppression de $crontab"
|
||||
rm "$crontab" || die
|
||||
uscrontab="$(get_usercrontab "$uscrontab")"
|
||||
if [ -f "$uscrontab" ]; then
|
||||
ask_yesno "Voulez-vous supprimer le fichier $uscrontab?" C || die
|
||||
enote "Suppression de $uscrontab"
|
||||
rm "$uscrontab" || die
|
||||
fi
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "list" ]; then
|
||||
if [ -n "$crontab" ]; then
|
||||
crontab="$(abspath "$crontab")"
|
||||
array_from_lines ctfiles "$(crontab -l 2>/dev/null | awkrun script="$script" crontab="$crontab" '$6 == script && $7 == crontab { print $7 }')"
|
||||
if [ -n "$uscrontab" ]; then
|
||||
uscrontab="$(abspath "$uscrontab")"
|
||||
array_from_lines ctfiles "$(crontab -l 2>/dev/null | awkrun script="$script" uscrontab="$uscrontab" '$6 == script && $7 == uscrontab { print $7 }')"
|
||||
if [ ${#ctfiles[*]} -eq 0 ]; then
|
||||
ewarn "$(ppath "$crontab"): non planifié"
|
||||
ctfiles=("$crontab")
|
||||
ewarn "$(ppath "$uscrontab"): non planifié"
|
||||
ctfiles=("$uscrontab")
|
||||
fi
|
||||
else
|
||||
array_from_lines ctfiles "$(crontab -l 2>/dev/null | awkrun script="$script" '$6 == script { if ($7) print $7; else print "GENERIC" }')"
|
||||
|
@ -375,28 +384,28 @@ elif [ "$action" == "show-ctnow" ]; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
[ -z "$crontab" -o -f "$crontab" ] || die "$crontab: fichier introuvable"
|
||||
[ -n "$crontab" ] && crontab="$(abspath "$crontab")"
|
||||
[ -z "$uscrontab" -o -f "$uscrontab" ] || die "$uscrontab: fichier introuvable"
|
||||
[ -n "$uscrontab" ] && uscrontab="$(abspath "$uscrontab")"
|
||||
|
||||
if [ "$action" == "install" ]; then
|
||||
ctline="$USCRONTAB_CTLINE"
|
||||
[ -n "$crontab" ] && ctline="$ctline $(quoted_arg "$crontab")"
|
||||
[ -n "$uscrontab" ] && ctline="$ctline $(quoted_arg "$uscrontab")"
|
||||
enable_in_crontab "$ctline" && estep "add_to_crontab $ctline"
|
||||
|
||||
elif [ "$action" == "uninstall" ]; then
|
||||
ctline="$USCRONTAB_CTLINE"
|
||||
[ -n "$crontab" ] && ctline="$ctline $(quoted_arg "$crontab")"
|
||||
[ -n "$uscrontab" ] && ctline="$ctline $(quoted_arg "$uscrontab")"
|
||||
remove_from_crontab "$ctline" && estep "remove_from_crontab $ctline"
|
||||
|
||||
elif [ "$action" == "run" ]; then
|
||||
if [ -n "$crontab" ]; then
|
||||
default_lockfile="/var/run/$scriptname$crontab.lock"
|
||||
if [ -n "$uscrontab" ]; then
|
||||
default_lockfile="/var/run/$scriptname$uscrontab.lock"
|
||||
else
|
||||
set_usercrontabs usercrontabs
|
||||
ac_set_tmpfile crontab
|
||||
ac_set_tmpfile uscrontab
|
||||
for usercrontab in "${usercrontabs[@]}"; do
|
||||
echo "# $usercrontab" >>"$crontab"
|
||||
cat "$usercrontab" >>"$crontab"
|
||||
echo "# $usercrontab" >>"$uscrontab"
|
||||
cat "$usercrontab" >>"$uscrontab"
|
||||
done
|
||||
default_lockfile="/var/run/$scriptname$USCRONTAB_USER.lock"
|
||||
fi
|
||||
|
@ -423,7 +432,7 @@ elif [ "$action" == "run" ]; then
|
|||
exit 0
|
||||
;;
|
||||
stale)
|
||||
msg="Un verrou sur '$scriptname $crontab' est posé depuis plus de $lockdelay heures. Veuillez faire vos vérification et supprimer le cas échéant le fichier $lockfile"
|
||||
msg="Un verrou sur '$scriptname $uscrontab' est posé depuis plus de $lockdelay heures. Veuillez faire vos vérification et supprimer le cas échéant le fichier $lockfile"
|
||||
logger -p cron.warn -t "$scriptname" -- "$msg"
|
||||
if [ -f "$lockwarn" ]; then
|
||||
edebug "$msg"
|
||||
|
@ -473,7 +482,7 @@ elif [ "$action" == "run" ]; then
|
|||
die "$*"
|
||||
}
|
||||
|
||||
__ctscript="$(ctresolve <"$crontab")"
|
||||
__ctscript="$(ctresolve <"$uscrontab")"
|
||||
ec=0
|
||||
edebug "$__ctscript"
|
||||
(
|
||||
|
@ -530,7 +539,7 @@ puis supprimez le cas échéant le fichier $pidfile"
|
|||
ac_cleanall
|
||||
); ec=$?
|
||||
|
||||
ac_clean "$crontab"
|
||||
ac_clean "$uscrontab"
|
||||
ac_clean "$lockfile"
|
||||
|
||||
exit "$ec"
|
||||
|
|
Loading…
Reference in New Issue