uwatch: ajout de l'option -r

This commit is contained in:
Jephté Clain 2017-09-09 21:25:40 +04:00
parent d99718e692
commit f131e21177
1 changed files with 41 additions and 4 deletions

45
uwatch
View File

@ -14,11 +14,16 @@ OPTIONS
Afficher l'heure (par défaut) Afficher l'heure (par défaut)
-c, --count -c, --count
Afficher le temps écoulé depuis le lancement de ce script Afficher le temps écoulé depuis le lancement de ce script
-r, --rcount
Afficher un décompte depuis DURATION jusqu'à 0 puis terminer le script.
DURATION exprimé en secondes est le premier argument du script et vaut
par défaut ${DEFAULT_DURATION} soit $(($DEFAULT_DURATION / 60)) minutes.
-u, --units -u, --units
Avec l'option --count, afficher l'unité: sec., min. ou heures Avec l'option --count, afficher l'unité: sec., min. ou heures
-o, --offset NBSEC -o, --offset NBSEC
Avec l'option --count, spécifier un nombre de secondes à partir duquel Avec l'option --count, spécifier un nombre de secondes à partir duquel
compter compter. Avec l'option --rcount, le nombre de secondes est soustrait à
DURATION.
-s, --step NBSECS[=1] -s, --step NBSECS[=1]
Spécifier la période de rafraichissement de l'affichage Spécifier la période de rafraichissement de l'affichage
-a, --prefix PREFIX -a, --prefix PREFIX
@ -26,12 +31,15 @@ OPTIONS
-z, --suffix SUFFIX -z, --suffix SUFFIX
Spécifier une chaine à afficher après l'heure Spécifier une chaine à afficher après l'heure
--cc --cc
Equivalent à -c -s 5 -a 'Connecté sur \$MYHOST depuis ' -z '...' Equivalent à -c -s 5 -u -a 'Connecté sur \$MYHOST depuis ' -z '...'
Permet de garantir une activité sur une connexion SSH utilisée Permet de garantir une activité sur une connexion SSH utilisée
uniquement pour faire une redirection de port" uniquement pour faire une redirection de port
--rc
Equivalent à -r -s 1 -u -a 'Attendre ' -z ''"
} }
DEFAULT_STEP=1 DEFAULT_STEP=1
DEFAULT_DURATION=300
what=time what=time
units= units=
@ -43,18 +51,31 @@ args=(
--help '$exit_with display_help' --help '$exit_with display_help'
-t,--time what=time -t,--time what=time
-c,--count what=count -c,--count what=count
-r,--rcount what=rcount
-u,--units units=1 -u,--units units=1
-o:,--offset: offset= -o:,--offset: offset=
-s:,--step: step= -s:,--step: step=
-a:,--prefix: prefix= -a:,--prefix: prefix=
-z:,--suffix: suffix= -z:,--suffix: suffix=
--cc '$what=count; units=1; step=5; prefix="Connecté sur $MYHOST depuis "; suffix="..."' --cc '$what=count; units=1; step=5; prefix="Connecté sur $MYHOST depuis "; suffix="..."'
--rc '$what=rcount; units=1; step=1; prefix="Attendre "; suffix=""'
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
[ -n "$step" ] || step="$DEFAULT_STEP" [ -n "$step" ] || step="$DEFAULT_STEP"
setx start=date +%s setx start=date +%s
[ -n "$offset" ] && start=$(($start - $offset))
case "$what" in
count)
[ -n "$offset" ] && start=$(($start - $offset))
;;
rcount)
duration="${1:-$DEFAULT_DURATION}"
[ -n "$offset" ] && duration=$(($duration - $offset))
end=$(($start + $duration))
TZ= setx until=date -d "@$end" +%H:%M:%S
;;
esac
while true; do while true; do
case "$what" in case "$what" in
@ -73,6 +94,22 @@ while true; do
fi fi
[ ${#msg} -eq 2 ] && msg="${msg#0}" [ ${#msg} -eq 2 ] && msg="${msg#0}"
;; ;;
rcount)
setx now=date +%s
if [ $now -ge $end ]; then
echo
break
fi
TZ= setx msg=date -d "@$(($end - $now))" +%H:%M:%S
msg="${msg#00:}"; msg="${msg#00:}"
if [ -n "$units" ]; then
if [ ${#msg} -ge 8 ]; then msg="$msg heures"
elif [ ${#msg} -eq 5 ]; then msg="$msg min"
elif [ ${#msg} -eq 2 ]; then msg="${msg#0} sec"
fi
fi
[ ${#msg} -eq 2 ] && msg="${msg#0}"
msg="$msg (jusqu'à $until)"
esac esac
echo -n $'\e[1G\e[K'"$prefix$msg$suffix" echo -n $'\e[1G\e[K'"$prefix$msg$suffix"
sleep "$step" sleep "$step"