Server Passwort ändern und keepassx.xml erstellen

Hier habe ich eine Script geschrieben um auf allen meinen Servern ein Passwort zu ändern und anschließend in einer keepassx XML Datei zu Dokumentieren. Voraussetzung hierfür ist, das neben dem Tool pwgen eine Publikkey auf den Servern ist.

Zunächst muss die Liste der Server in einer Datei angelegt werden.

#!/bin/bash
# Christoph Hueffelmann 
# v0.1 2012-12-12

export path=keepassx.xml

function sshpw () {
	server=$1
	echo $server

	#Hier wird ein Zufallspasswort erzeugt.
	PW=$(pwgen -1 12)

	#Hier wird eine SSH Verbindung auf den Server erstellt und das Passwort geändert
	#sollte dieser Vorgang schief gegen wird das PW nicht in die XML Datei geschrieben. 
	ssh $server "passwd  </dev/null > $path 
}

function dbcreate() {
	echo '

 
  Server
  30'
}

function dbentry() {
	server=$1
	PW=$2
	d=$(date "+%Y-%m-%dT%H:%M:%S")

	echo "   
   $server
   root
   $PW
   
   
   30
   $d
   $d
   $d
   Nie
  ";
}

function dbclose() {
	echo ' 
'
}

#Hier wird überprüft ob eine Liste angegeben wurde.
if [ "$1" == "" ]; then
        echo "ssh-chpw.sh server.liste"
	exit 1
else
        list=$1
fi

if [ -s "$path" ]; then
        echo "Die $path Datei Existiert bereits und sollte nicht überschreiben werden."
        exit 1
fi

if [ -x "/usr/bin/pwgen" ]; then
        echo "Das Programm pwgen ist nicht verfügbar"
        echo "  sudo apt-get install pwgen"
        exit 1
fi

#Hier werden auskommentierte Zeilen wie # entfernt
tmp=$(mktemp)
sort --random-sort $list.txt | grep -v -e "^#" -e ";" -e "^$" > $tmp

dbcreate > $path
while read server; do 
	sshpw "${server}"
done > $path

rm $tmp
exit 0

Die Liste der Server wird dann wie folgt übergeben.
# ssh-chpw.sh liste
Die durch das Script erstelle keepassx.xml kann dann in keepass importiert werden und sollte dann umgehend gelöscht werden, da die Passwörter in der XML Datei im Klartext stehen.

Mehr Infos über: KeePassX