Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 3
  • 38

Mam certyfikat. Czy mogę jakoś prosto z poziomu basha uzyskać ilość dni jego ważności?

Datę ważności mogę przekształcić za pomocą:

undefine@uml:~$ echo |openssl  s_client -connect www.onet.pl:443 2>/dev/null |openssl x509 -noout -enddate
notAfter=Jan  3 23:59:59 2016 GMT

Ale jak to w bash przekształcić na ilość dni pozostałą do końca okresu ważności? Ew jakoś inaczej np wysłać maila w sytuacji gdy ważność skończy się za 7 dni?

 

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 23.11.2015
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169

Odpowiedź (1)

  • 0

No tak, można użyć date.

Prosty mały hakierski przykład:

 

undefine@uml:~/bin$ cat scan-ssl 
#!/bin/sh
klasa=87.204.26.0/24
if [ "$1" ]; then
	klasa="$*"
fi
tmpfile=`mktemp /tmp/skan.XXXXXX`
nmap -oG - -p 443 --open $klasa |grep Ports |while read x ip y; do
	echo |openssl s_client -connect $ip:443 > $tmpfile 2>/dev/null
	[ -s $tmpfile ] || continue
	subject=`openssl x509 -in $tmpfile -noout -subject 2>/dev/null |tr '/' '\n' |grep CN=`
	[ "$?" -ne 0 ] && continue
	enddate=`openssl x509 -in $tmpfile -noout -enddate 2>/dev/null |cut -f 2 -d '='`
	epoch=`date -d "$enddate" +%s`
	now=`date +%s`
	left=$(( ( $epoch - $now ) / 3600 / 24 ))
	if [ $left -ge 14 ]; then
		echo OK echo $ip $subject $enddate left: $(( ( $epoch - $now ) / 3600 / 24 ))
	else
		echo WARNING echo $ip $subject $enddate left: $(( ( $epoch - $now ) / 3600 / 24 ))
	fi
done

 

;)

 

 

Andrzej_Dopierała
  • Odpowiedział
  • @ Andrzej_Dopierała | 24.11.2015
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169