Beiträge mit Tag ‘bash’

Mailadresse von Webseiten ermitteln

Hier möchte ich kurz aufzeigen, wie einfach es ist von Webseiten die Mailadresse aus dem Code zu extrahieren und evtl. für SPAM weiter zu verwenden.

curl -# https://www.daserste.de/specials/service/ard-links-adressen-100.html | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" | sort | uniq

Zuerst verwenden wir den Befehl curl um den html-Code auszugeben. Diesen „schicken“ wir dann weiter zu grep, der mit dem Pattern für gültige Mailadressen dieses aus dem Code extrahiert. Zur besseren Übersicht wird das Ergebnis von grep noch sortiert (sort) und eventuell doppelte Einträge entfernt (uniq).

Wer das öfters zu Demonstrationszwecken tun möchte, der kann auch gerne eine kleine Funktion in .profile abspeichern.

function get-mailadr-from-website {
	curl  -# $1 | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" | sort | uniq		 
}

Grafana – Tage bis Zertifikat ausläuft ermitteln

In letzter Zeit befasse ich mich öfters mit Grafana. Man kann damit recht einfach und übersichtlich Daten darstellen lassen. Mit folgendem Script ermittle ich das Ablaufdatum einen Webserverzertifikates.

Ich habe in einer MySQL Datenbank eine DB „Hosts“ und darin ist eine Tabelle Server enthalten. Ich verwende diese öfters und kann anhand der Spalte „certchk“ ermitteln ob ich das Zertifikat zu diesem Server ermitteln soll.

In der Variable „DOM“ stehen die Server, die in der Tabelle entsprechend eine 1 stehen haben. Zusätzlich steht in der Spalte „Port“ welcher Port (Standard 443) abgefragt werden soll. Später schreibe ich die Daten in die Tabelle „cerdata“ um diese in Grafana zu verwerten. Einmal in der Nacht mittels Crontab das Script aufrufen sollte reichen.

#!/usr/bin/env bash

SERVER=`mysql -h localhost --database=hosts -s -e "select Hostname from server where certchk = 1;"`
SDATE=`date "+%Y-%m-%d %H:%M:%S"`

for DOM in $SERVER 
do

PORT=$(mysql -h localhost --database=hosts -s -e "select port from server where Hostname = '$DOM';")
	ENDD=$( echo | openssl s_client -showcerts -servername google.com -connect $DOM:$PORT 2>/dev/null | openssl x509 -inform pem -noout -text | grep "Not After" |awk -F" " '{print $4" "$5" "$6" "$7 }')
	ENDD=$( date -d "$ENDD" +%s )
   NOWD=$( date +%s )

	ANZ=$(( ( $ENDD - $NOWD )/(60*60*24) ))
	mysql -h localhost --database=hosts -sN -e "INSERT INTO certdata ( Datum, Server, Counter) VALUES ('$SDATE', '$DOM', '$ANZ');"

done;

Wer mag kann in Grafana noch einen Alert, z.B. < 10 Tage, einrichten. Dann hat man ja noch 10 Tage Zeit sich um ein neues Zertifikat zu besorgen sofern man keines von Letsencrypt verwendet.

Reverse Namen zur Domain ermitteln

Manchmal möchte ich auf die schnelle wissen auf welchem Server eine bestimmte Kundendomain Liegt. Am einfachsten geht dies für mich, indem ich den Reversnamen der Domain-IP mir ausgeben lasse.

Bash Script „Debuggen“

Manchmal muss man ein Bash Script Debuggen. Anstatt das Script mit vielen echo-Befehlen zu versehen, kann man auch einfach folgenden Schalter beim Start des Scripts verwenden: