close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 10 years ago

Closed 10 years ago

Last modified 8 years ago

#2354 closed Aufgabe

Massenlogin simulieren

Reported by: Rüdiger Kupper Owned by: bau
Priority: schnell erledigen Milestone: Schuljahr 2016/17
Component: Hardware: Netzwerktechnik Severity: beeinträchtigt den Unterricht einiger Lehrer
Keywords: Cc:

Description

Hinter das Problem der Hänger bei gleichzeitigen Logins kommen wir nur, wenn wir die Situation realistisch simulieren können: Während der Unterrichtszeit verbietet sich das Experimentieren, doch außerhalb des Unterrichts sind wir meist im Netzwerk allein.

Zum Testen von Optionen bräuchten wir eine realistische Umgebung (viele eingeloggte User, üblicher Netzwerkverkehr und dann loggen sich 20-30 Nutzer gleichzeitig im Computerraum ein).
Unsere 30 Gast-Accounts manuell einzuloggen ist schonmal eine gute Maßnahme, aber auf die Dauer sehr mühsam. Ich möchte das gerne automatisieren können.

TODO: Herausfinden, wie man graphische Sitzungen auf den Clients von remote starten kann. Dann ein Skript schreiben, das auf vielen Rechner gleichzeitig Sitzungen startet. Schön wäre, wenn es dann auch gleich noch in jeder Sitzung den Firefox öffnen könnte...

Change History (6)

comment:1 by Rüdiger Kupper, 10 years ago

Letzteres lässt sich realisieren, indem man FF in den Autostart der Gastnutzer schreibt. Und vielleicht auch noch andere Programme wie LO.

comment:2 by Rüdiger Kupper, 10 years ago

Stichwort: lightdm auf Autologin konfigurieren, dann per parallel-ssh lightdm neu starten. Morgen mal probieren.

comment:3 by Rüdiger Kupper, 10 years ago

Status: new → closed

So, das Skript ist fertig! Sobald die Schülerrechner fertig gesynct haben, kann man es verwenden.

(Anbei: Das Syncen hat -- trotz Torrent! -- dazu geführt, dass jetzt 90 rsync-Prozesse auf dem paedml laufen! An so etwas kann ich mich vor den Ferien nicht erinnern, da hat der Bittorrent besser geklappt, oder?)

Verwendung

Das Skript heißt loginbomb und liegt auf allen Clients. Startet man es (als root) auf einem einzelnen Client, so macht es nichts weiter, als eine graphische Sitzung für einen unserer Gast-User zu starten. In dieser Sitzung werden dann automatisch bestimmte Programme aufgerufen (defaultmäßig Firefox und Writer).

Der Aufruf loginbomb -d beendet die Sitzung und macht den Rechner wieder normal benutzbar.

Auf einem einzelnen Client kann man damit nicht viel Schaden anrichten. Seine Wirkung entfaltet das Skript erst, wenn Du es per parallel-ssh vom paedml aus auf vielen Clients gleichzeitig aufrufst. Beispiel:

root@paedml# parallel-ssh -H "$(workstationsgrepper -r 1-09 -H)" loginbomb

startet auf allen Rechnern im Raum 1-09 gleichzeitig graphische Gastsitzungen. Die Nummer des Gastnutzers wird per Modulo 30 aus der IP des Clients ausgerechnet -- das stellt sicher, dass auf allen Rechnern im Raum verschiedene Nutzer eingeloggt werden (denn die Clients in den Computerräumen haben fortlaufende IPs).

Den Login-GAU könntest Du simulieren mit:

root@paedml# parallel-ssh -H "$(workstationsgrepper -g schueler -H)" loginbomb

Das würde auf jedem Schülerrechner eine Sitzung starten. Da das mehr als 30 sind, würden dann die Gastnutzer auf mehreren Rechnern gleichzeitig eingeloggt.

Die Skripte "entschärfen" sich nach 20 Sekunden selbst, so dass beim nächsten Login wieder alles normal ist. Es gibt aber auch die Möglichkeit, alle Sitzungen vom paedml aus wieder zu beenden:

root@paedml# parallel-ssh -H "$(workstationsgrepper -r 1-09 -H)" loginbomb -d

beendet die Gastsitzung auf den Clients und löscht die Autostartskripte, so dass der Rechner normal verwendbar ist.

Das Skript nimmt noch ein paar Optionen, die beschreibe ich gleich.

comment:4 by Rüdiger Kupper, 10 years ago

Das Skript nimmt noch zwei Optionen:

  • --workload="... ... ...": Liste der Programme, die nach dem Login gestartet werden. Muss mit den Namen der *.desktop-Dateien in /usr/share/applications korrespondieren. Default: "firefox libreoffice-writer".
  • --timetowait=...: Sekunden, die das Skript dem Login Zeit gibt, bevor es die Autostartskripte entfernt und den Rechner wieder normal verwendbar macht. Default: 20 Sekunden.

comment:5 by bau, 8 years ago

Hallo Rüdiger,

kann loginbomb auch einen bestimmten User anmelden, dessen Passwort ich angebe?
Ich logge für die Klausur jetzt halt mal per Hand ein - auch für Rubens Anmeldung des ostbe zur Kurswahl wäre das nützlich

Grüße
Jems

in reply to:  5 comment:6 by Rüdiger Kupper, 8 years ago

Replying to bau:

kann loginbomb auch einen bestimmten User anmelden, dessen Passwort ich angebe?

Ja, kann es, habe ich für die 5er-Anmeldung implementiert. Der Hilfetext war leider unlesbar, das habe ich jetzt repariert. Da steht, wie es geht:

root@rechner2-3-12:~# loginbomb --help
Usage: loginbomb -h|--help loginbomb [-t <time>|--timetowait=<time>] [-w <apps>|--workload <apps>] loginbomb -d|--defuse
 
 Beim Aufruf ohne Argument wird ein Testnutzer automatisch eingeloggt und in seiner Sitzung die
 angegebenen Anwendungen gestartet. Nach einer Wartezeit wird das Autologin-Skript deaktiviert
 (falls der Rechner dann noch läuft), damit der nächste Login wieder normal erfolgt.
 
 Die Wartezeit kann im Argument --timetowait gesetzt werden (Default: 60 Sekunden).
 
 Die zu startenden Anwendungen können im Argument --workload gesetzt werden
 (Default: 'firefox libreoffice-writer'. Die Namen müssen mit .desktop-Dateien in 
 /usr/share/applications korrespondieren.)
 
 Normalerweise werden als Testnutzer die Accounts 'gast1' bis 'gast30' verwendet. Werden andere
 Accounts gewünscht, so können diese im Parameter --users übergeben werden, z.B.
 --users='schuelte lehrer kepler'.
 
 Beim Aufruf mit Argument --defuse wird die laufende Sitzung sofort beendet und das
 Autologinskript entfernt, so dass der Rechner wieder normal verwendbar ist.
 (HINWEIS: Wurde beim Aufruf eine Nutzerliste mit --users übergeben, sollte zusammen mit
 --defuse die selbe Liste übergeben werden!)

Also als Argument --users="<nutzer1> <nutzer2> ..." angeben. Passwörter werden nicht benötigt, da die Nutzer über die Auto-Login- option von lightdm angemeldet werden. (Natürlich kann nur root das veranlassen.)

Note: See TracTickets for help on using tickets.