Schnelle ssh-Aktionen auf allen eigenen uberspaces

Veröffentlicht von am Jan 14, 2012 in Drupal | 3 Kommentare

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.

flattr this!

3 Kommentare

  1. Micha
    15. Januar 2012

    Sorgt das “in $(uberspaces)” dafür, das nur Uberspace-Einträge zurückgegeben werden? Oder werden alle Einträge der Konfig-Datei geliefert?

    Antworten
    • Dirk Rüdiger
      15. Januar 2012

      das $(uberspaces) führt den Befehl uberspaces (https://gist.github.com/1613079) aus und gib die Liste der Uberspace-Einträge an die for-Schleife. Das $() ist gleich den Backticks ``.

      Antworten
  2. Micha
    15. Januar 2012

    +2

    Antworten

Hinterlasse eine Antwort