it-swarm-eu.dev

Beste Möglichkeit, Ubuntu von einem Windows-Computer aus per Fernzugriff neu zu starten

Hintergrund: Ich möchte eine Reihe von Ubuntu-Geräten in Einzelhandelsgeschäften aufstellen. Sie werden als dumme Kioske verwendet, um eine Reihe von Dias auf großen LCD - Fernsehbildschirmen zu zeigen. Einmal installiert, haben sie keine Tastatur oder Maus angeschlossen, sondern eine feste IP im lokalen Netzwerk. Alles ist so konfiguriert, dass es automatisch startet, keine automatischen Updates, keine Stromsparmaßnahmen usw. Ich denke, es ist ziemlich gut, von einer Sache abzuweichen. Ich benötige das Verkaufspersonal, um die Boxen im Problemfall neu starten zu können.

Wir haben VNC gestartet (jetzt, da wir die Desktop-Verbesserungen deaktiviert haben!), Damit wir bei Bedarf remote auf die Maschinen zugreifen können. Dies ist jedoch nichts, was wir den Mitarbeitern des Einzelhandels erlauben würden. Die Maschinen werden physisch "aus dem Weg" sein (wahrscheinlich im Deckenraum) der Netzschalter ist nicht leicht zugänglich!.

Ich hätte gerne eine Möglichkeit, den Mitarbeitern des Einzelhandels den Neustart des Ubuntu-Computers vom Desktop eines ihrer Windows-Terminals aus zu ermöglichen. Ich möchte ihnen nicht wirklich einen unformatierten Terminalzugriff gewähren (die Befehlszeile macht ihnen Angst!) Und ich möchte nicht, dass sie VNC verwenden (wie oben angegeben). Im Idealfall befindet sich ein Symbol auf dem Windows-Desktop. Sie doppelklicken darauf und antworten auf ein einfaches "Sind Sie sicher?". Eingabeaufforderung, und dann wird die Ubuntu-Box aufgefordert, neu zu starten. Die Windows-Seite ist kein Problem, wir können etwas mit Delphi, Python und Qt4 schreiben, was auch immer - es ist die Ubuntu-Seite, an der ich festhalte.

Könnte ich ein Windows-Programm haben, das ein Terminal im Netzwerk öffnet und Ubuntu anweist, neu zu starten? Ist das, wofür SSH verwendet werden könnte (ich habe so etwas noch nie eingerichtet)? Die Windows-Programmierseite ist eigentlich kein Problem, ich bin nur ein totaler Ubuntu-Neuling und weiß nicht, wo ich aus Sicht der Plattform anfangen soll.

Das andere, was wir in Betracht gezogen haben, ist, dass sich die Maschine jeden Tag zu einer festgelegten Zeit automatisch neu startet (offensichtlich außerhalb der Geschäftszeiten!). Das erscheint mir ein bisschen unnötig (obwohl es sich lohnen könnte, einmal pro Woche/Monat einen Neustart durchzuführen).

Irgendwelche Gedanken oder Vorschläge? Die Box bei Bedarf über das Netzwerk neu starten zu können, ist meine Hauptanforderung.

3
robsoft

Könnte ich ein Windows-Programm haben, das ein Terminal im Netzwerk öffnet und Ubuntu anweist, neu zu starten? Wofür könnte SSH verwendet werden?

Ja. Genau so würde ich es machen. Der erste Schritt ist, dass Sie PuTTY auf den Windows-Computern installieren möchten. Auf diese Weise können Sie SSH verwenden. Aber machen Sie sich vorerst keine Sorgen. Lassen Sie uns dies rückwärts machen, beginnend mit der Ubuntu-Maschine.

Ich würde ein Skript auf dem Ubuntu-Rechner schreiben, um den Neustart durchzuführen. Wenn Sie sich einloggen können, ist es wahrscheinlich, dass Sie keinen vollständigen Neustart durchführen müssen. Sie könnten argumentieren, dass Sie "genauso gut könnten", aber es bedeutet oft, dass der Neustart vier- oder fünfmal länger dauert als nötig. Es ist nur Zeitverschwendung.

Sie sollten in der Lage sein, GDM einfach neu zu starten (Sudo restart gdm), sodass ich ein interaktives Python -Skript schreiben würde, das den Benutzer auffordert, dies sicherzustellen sind sicher, dass sie GDM neu starten möchten und starten Sie es dann neu. Danach würde es fünf Sekunden warten und sie dann fragen, ob es funktioniert. Wenn nicht, führen Sie einen vollständigen Neustart durch (Sudo reboot).

Edit: Es besteht auch die Möglichkeit, dass Sie die Anwendung, die auf diesen Bildschirmen angezeigt wird, möglicherweise nur neu starten können, ohne GDM neu zu starten. Ich weiß nicht, was Sie erwarten, umzufallen, aber nehmen Sie alle drei und geben Sie dem Benutzer die Möglichkeit, jeden nacheinander neu zu starten, beginnend mit der App, dann GDM, dann der Maschine.

Sie können Flüche verwenden, um dieses Aussehen schöner zu machen.

Als nächstes müssen Sie sicherstellen, dass Ihr Ubuntu-Benutzer diese Befehle auf Root-Ebene ausführen kann. Führen Sie sudoedit /etc/sudoers aus und fügen Sie Folgendes hinzu:

Cmnd_Alias REBOOT = /sbin/reboot
Cmnd_Alias RESTART = /sbin/restart

useraccount   ALL=REBOOT
useraccount   ALL=RESTART

Übermitteln von useraccount für den Benutzernamen des Kontos, unter dem dieses Skript ausgeführt werden soll.

Sie sollten sich jetzt über SSH anmelden und das Skript testen können.

Das letzte Puzzleteil ist, SSH mit Ubuntu zu verbinden und das Skript automatisch auszuführen. Sie können ein Zertifikat verwenden (es ist wahrscheinlich sicherer), aber für dieses Beispiel verwende ich nur ein Klartext-Passwort.

PuTTY.exe [email protected] -pw password -m commands.txt

Offensichtlich werden useraccount, 1.2.3.4 und password mit echten Werten ausgegeben. commands.txt sollte eine Textdatei auf dem Windows-Computer sein, die etwa Folgendes enthält:

python my_python_script.py

Hinweis: Der Pfad, unter dem Sie sich anmelden, ist /home/useraccount/. Fügen Sie dort entweder Ihr python -Skript ein oder ändern Sie den Pfad in commands.txt.

Wichtiger Hinweis: PuTTY wird geschlossen, sobald der Befehl beendet ist. Das bedeutet, dass Ihr Python -Skript interaktiv sein MUSS (fragen Sie vor dem Beenden mindestens nach "Drücken Sie eine beliebige Taste, um fortzufahren"), sonst wird dem Benutzer keine Ausgabe angezeigt. Das ist einfach genug. Sie haben Python erwähnt, daher gehe ich davon aus, dass Sie wissen (oder wissen, wie Sie herausfinden können), wie Sie einfache Eingabeaufforderungen ausführen. Wie ich bereits sagte, würde eine einfache Curses-Oberfläche am professionellsten aussehen.

Wichtiger Hinweis 2: Manchmal schlägt eine Maschine/Software bis zu dem Punkt fehl, an dem ein harter Neustart die einzige Option ist. Wenn Sie die Computer an einem Ort haben, an dem es wirklich schwierig ist, dorthin zu gelangen, sollten Sie überlegen, ob Sie Zugang zu deren Stromversorgung haben, damit Sie als letzte Möglichkeit ein "hartes Aus und Ein" machen können. Stellen Sie sicher, dass Sie ein Journalling-Dateisystem verwenden, damit die Mitarbeiter es nicht vermasseln, wenn sie es zu oft verwenden, und warnen Sie die Mitarbeiter, dass böse Zirkusleute ihre Kinder usw. stehlen, wenn sie es nicht als letzten Ausweg verwenden Es gibt nur wenige Dinge, die schlimmer sind als ein Angestellter, der beim kleinsten Schluckauf auf den Hard-Reset-Knopf drückt.

3
Oli

Wenn Sie ssh in der Windows-Maschine konfigurieren können, sollte es ziemlich einfach sein. Dies ist, was ich gerade tue, um einen Remote-Befehl von einem Ubuntu-Server zu einem anderen auszuführen

ssh ip.number.0.28 -i /home/javier/.ssh/id_rsa_web -l javier "cd /home/javier/sincrotod;./sincroniza.py"

Der -i-Teil weist ssh an, ein Zertifikat anstelle einer Kennwortanmeldung zu verwenden. Die Befehlszeilenreihenfolge zum Neustarten eines Computers lautet Neustart. Sie müssen sicherstellen, dass der zum Protokollieren verwendete Benutzer über die Berechtigung zum Herunterfahren des Computers verfügt.

1
Javier Rivera