Schnelle ssh-Aktionen auf allen eigenen uberspaces

Ich bin begeisterter Uberspace-User und betreibe zwei Dutzend Uberspaces bei dem Provider. Auf den meisten Accounts habe ich Drupal installiert und habe regelmäßig administrative Tätigkeiten auf mehreren oder allen Uberspaces zu erledigen — spätenstens, wenn ein Drupal-Sicheheitsupdate zu Eile mahnt.

Ich habe mir ein kleines Script uberspaces geschrieben, welches mir aus meiner Ssh-Konfigurationsdatei ~/.ssh/config die Liste der Ssh-Host-IDs alle Uberspaces liefert, die ich dann in Shellkommandos nutzen kann. Die Ssh-Host-IDs sind dabei mit Leerzeichen voneinander getrennt.

Beispiel: Gib die Crontabs aller Uberspaces aus

for i in $(uberspaces)
do
  echo "*** $i ***"
  ssh $i "crontab -l"
done

Und noch ein Beispiel: Finde alle Drupal-Installationen in allen Uberspaces, in denen ein bestimmtes Drupal-Modul installiert ist. In diesem Fall — aus aktuellem Anlass — das date.module

for i in $(uberspaces)
do
  echo "*** $i ***"
  ssh $i "find /var/www/virtual/$i -type f -name date.module"
done

Einzige Voraussetzung ist, dass in der Datei ~/.ssh/config für jeden Uberspace ein solcher Eintrag vorhanden ist:

Host myuberspace
  Hostname servername.uberspace.de
  User myuberspace

Der UserName und der Host-Id müssen nicht übereinstimmen, ich habe diese Konvention gewählt. Weitere Konfigurationswerte zu einem Eintrag sollten nicht stören, sie werden einfach ignoriert.

Auf diese Weise kann man leicht der Empfehlung der Ubernauten folgen, und für jede Website einen eigenen Uberspace einrichten, ohne bei der Administration zusätzlich Zeit investieren zu müssen.