[gull] [noreply at letsencrypt.org: Let's Encrypt Expiration Emails Update]

Félix Hauri felix at f-hauri.ch
Thu Apr 10 15:19:56 CEST 2025


Re,

  Je suis heureux de vous présenter la V0.0.6 de certShow.sh

  Usage: ${0##*/} [OPTIONS] <IP ADDRESS|HOST|FILE> [IP ADDRESS|HOST|FILE] ...
        -p Integer Max number of concurrent parallel process to run ($maxProc)
        -f String   Time format string ('$timeFmt')
        -d Integer  Number of days left before warning ($warnDays)
+       -n Float    Nice: delay in seconds between requests (implie "-p 1")
        -a          Show alternatives names
        -e          Show error stats
        -s          Show all stats
        -q          Quiet (Don't show line with status ok)
+       -u          Use Unicode symbols
        -h          Show this help

Le Thu, Apr 10, 2025 at 10:54:02AM +0200, Marc SCHAEFER via gull a écrit :
> 
> Un commentaire: j'utilise un IDS, et donc la parallélisation des
> connexions pourrait le trigger. Je vais donc utiliser -p 1 (bon,
> des requêtes successives pourraient aussi le trigger, on verra).

Ajouté l'option "-n <float delay in seconds>" (implie "-p 1").

> >    #   $ cat /pathTo/siteList.txt | xargs /pathTo/certShow.sh -q
> 
> Je suggère:
> 
> xargs < /pathTo/siteList.txt /pathTo/certShow.sh -q
Tu as raison: "avoid useless cat". J'avais initialement écrit:
   /pathTo/certShow.sh -q $(</pathTo/siteList.txt) 
mais c'est un bashism

In fine, j'ai ajouté la possibilité de lire la liste par stdin 

      /pathTo/certShow.sh -q www.domain1.com </pathTo/siteList.txt

> Une remarque: tu utilises des points de code unicode graphiques lors de
> l'affichage étendu... 
> une option --fancy-output pour activer ça ?

J'ai ajouté l'option "-u Use Unicode symbols".

Du coup, une ligne crontab pourrait ressembler à:

  '10 7 * * * /pathTo/certShow.sh -qn 30 </pathTo/siteList.txt'

Merci Marc pour tes commentaires!

--- les diffs:
--- certShow.sh 2025-04-10 09:21:52.000000000 +0200
+++ certShow.sh 2025-04-10 13:12:25.000000000 +0200
@@ -3,3 +3,3 @@
 # (C) 2022-2025 F-Hauri - http://www.f-hauri.ch
-# Version: 0.0.5 -- Last update: Thu Apr 10 09:21:52 CEST 2025
+# Version: 0.0.6 -- Last update: Thu Apr 10 13:12:25 CEST 2025
 # Licensed under terms of LGPL v3. www.gnu.org
@@ -15,4 +15,4 @@
 
-: "${maxProc:=10}  ${timeFmt:=%F}  ${warnDays:=14}  ${showAlt:=false} 
-   ${showAllStats:=false}    ${showErrStats:=false}     ${quiet:=false}"
+: "${maxProc:=10} ${timeFmt:=%F} ${warnDays:=14} ${showAlt:=false} ${delay=0}
+  ${showAllStats:=false} ${showErrStats:=false} ${quiet:=false} ${fancy:=false}"
 
@@ -24,2 +24,3 @@
            -d Integer  Number of days left before warning ($warnDays)
+           -n Float    Nice: delay in seconds between requests (implie "-p 1")
            -a          Show alternatives names
@@ -28,2 +29,3 @@
            -q          Quiet (Don't show line with status ok)
+           -u          Use Unicode symbols
            -h          Show this help
@@ -35,9 +37,9 @@
     local -A 'iStrs=([p]=maxProc [f]=timeFmt [d]=warnDays [a]=showAlt
-                     [s]=showAllStats [e]=showErrStats [q]=quiet )'
-    while getopts "aehqsd:f:p:" opt; do
+       [n]=delay [u]=fancy [s]=showAllStats [e]=showErrStats [q]=quiet )'
+    while getopts "aehqsud:f:n:p:" opt; do
        case $opt in
-           [dfp] )
+           [dfpn] )
                # shellcheck disable=SC2154 # Referenced but not assigned.
                printf -v "${iStrs["$opt"]}" %s "$OPTARG" ;;
-           [aeqs] )  printf -v "${iStrs["$opt"]}" %s true ;;
+           [aeqsu] )  printf -v "${iStrs["$opt"]}" %s true ;;
            h ) usage;exit 0 ;;
@@ -68,3 +70,4 @@
     [[ -v x509[subject] ]] || {
-       printf -- '%d|--|--|\U274C\UFE0F|--|--|%s|--|--\n' "$3" "$2" >&$col
+       printf -- '%d|--|--|%b|--|--|%s|--|--\n' "$3" "${symbol[BAD]}" \
+              "$2" >&$col
        return 4
@@ -78,11 +81,10 @@
     altline=${alts[*]}
-    # WARN: \\U26A0\\UFE0F, OK: \\U2705, BAD: \\U274C
     if  (( (dates[1]-EPOCHSECONDS) / 86400 < 0 )) ; then
-       printf -v sign '\U274C\UFE0F'
+       printf -v sign %b "${symbol[BAD]}"
        rescode=2
     elif(( (dates[1]-EPOCHSECONDS) / 86400 < warnDays )); then
-       printf -v sign '\U26A0\UFE0F'
+       printf -v sign %b "${symbol[WARN]}"
        rescode=1
     else
-       printf -v sign '\U2705\UFE0F'
+       printf -v sign %b "${symbol[OK]}"
     fi
@@ -134,2 +136,6 @@
     unset "spids[pid]"
+    case $delay in
+       0 |  '' | . | *[!0-9.]* | *.*.*  ) ;;
+       * ) sleep $delay ;;
+    esac
 }
@@ -167,2 +173,15 @@
     local pos=1 arg
+    if read -t 0 _; then
+       mapfile -t stdin2Arry
+       set -- "$@" "${stdin2Arry[@]}"
+    fi
+    if $fancy; then
+       declare -A symbol='([WARN]="\U26A0\UFE0F" [OK]="\U2705" [BAD]="\U274C")'
+    else
+       declare -A symbol='([WARN]="!" [OK]="-" [BAD]="X")'
+    fi
+    case $delay in
+       0 |  '' | . | *[!0-9.]* | *.*.*  ) ;;
+       * ) maxProc=1 ;;
+    esac
     for arg; do
@@ -182,4 +201,4 @@
        else
-           printf -- '%d|--|--|\U274C\UFE0F|--|--|%s|--|--\n' \
-                  $((pos++)) "$arg" >&$col
+           printf -- '%d|--|--|%b|--|--|%s|--|--\n' $((pos++)) \
+                  "${symbol[BAD]}" "$arg" >&$col
            res_8_list+=(0.0000s "$arg")



-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list