Kommunikation via SSH ist von entscheidender Bedeutung, wenn ich mein Vorhaben vom voringen Beitrag zum Stromverbrauch mit den beiden Raspberry Pi umsetzen will. Problematisch ist hierbei, dass der PiMedia ja nicht einfach ausgeschaltet werden darf – sondern im Idealfalle vorher heruntergefahren werden sollte. PiServer bekommt den Befehl, PiMedia abzuschalten. Dies soll mit SSH über ein simples Shell-Script realisiert werden. Die Vorbereitungen hierzu erkläre ich hier, das eigentliche Shell Script folgt dann später. Die Vorgehensweise ist einfach:
zuerst wird mittels SSH der Befehl zum Herunterfahren von PiMedia gegeben
anschließend gebe ich PiMedia ausreichend Zeit sich selbst zu beenden
Jetzt kann ich die Steckdose sicher abschalten
Kommunikation via SSH
SSH kann PiServer mit Raspian von hause aus, auch der PiMedia mit Raspbmc versteht (wenn es denn aktiviert ist) SSH. Im Terminal der PiServer kann ich mich einfach über SSH verbinden:
ssh pi@192.168.178.100
Anschließend werde ich nach einem Passwort gefragt, und kann dann den Befehl zum herunterfahren geben:
sudo poweroff
Nun will ich das ganze ja aber aus einem Shell-Script aufrufen – eine Eingabe des Passwortes ist also nicht möglich. Hierfür gibt es zwei Lösungen: Passwortfreier Zugang mittels authorised_keys oder Übergabe des Passwortes mittels sshpass. Ich persönlich finde die Variante mit sshpass deutlich angenehmer. Mit
sudo apt-get install sshpass
installiere ich das nur wenige KB große Tool. Ein Test, ob es wie gewünscht funktioniert kann ich mit
testen. Der Befehl uptime gibt lediglich die Zeit zurück, seit wann PiMedia bereits eingeschaltet ist. Die übergabe des Passwortes in dieser Form ist jedoch eine potentielle Sicherheitslücke – jeder, der das Script sieht weiß das Passwort von meinem PiMedia. Dies will ich ändern.
SSH-Passwort auslagern
Im Benutzerorder meines Users von PiServer lege ich die Datei .sshpass an, welche das Passwort enthält.
nano ~/.sshpass
Nun sorge ich dafür, das lediglich der aktive Benutzer (pi) diese Datei lesen und schreiben darf:
chmod 0600 ~/.sshpass
Jetzt kann NUR mein einer Benutzer diese Datei verwenden, alle anderen Nutzer haben dazu keine Berechtigung. Ein kurzer Test, ob die Übergabe des Passwortes funktioniert:
Übergebe ich am Ende (innerhalb der Anführungszeichen) einen Befehl, wird dieser ausgeführt, die SSH-session anschließend wieder beendet. Wenn ich keinen Befehl übergebe werde ich lediglich auf dem zweiten Raspberry eingeloggt, kann dann meine Befehle eingeben und komme mit „exit“ wie gewohnt wieder zu meinem ersten Raspberry zurück.
Wenn ich mehrere Befehle übergeben will, kann ich diese mittels && verknüpfen:
Im Prinzip sollte PiMedia jetzt herunterfahren. Einige Befehle welche normalerweise per SSH funktionieren verweigern jetzt jedoch die Funktion, sie geben lediglich eine „unknown command“-Meldung zurück. Dies kann behoben werden, indem man den vollen Pfad angibt. Funktioniert „sudo poweroff“ also nicht, logge ich mich nochmal kurz auf PiMedia ein und frage mit
whereis poweroff
den Pfad ab. Entsprechend kann ich nun den Befehl anpassen:
Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.
Unbedingt notwendige Cookies
Unbedingt notwendige Cookies sollten jederzeit aktiviert sein, damit wir deine Einstellungen für die Cookie-Einstellungen speichern können.
Wenn du diesen Cookie deaktivierst, können wir die Einstellungen nicht speichern. Dies bedeutet, dass du jedes Mal, wenn du diese Website besuchst, die Cookies erneut aktivieren oder deaktivieren musst.