PHP Script soll sich auf einen Server einloggen und einen Befehl ausführen

3df

Registered User
Hallo zusammen,

ich muss aus diversen gründen (Hausautomation) per PHP o.ä. eine SSH Verbindung zu meinem Raspberry Pi herstellen können und dieses soll dann nach dem einloggen noch einen Befehl senden.

Das ganze läuft nur Lokal ab, also z.B.:

http://192.168.178.22/script.php wird aufgerufen, dieses loggt sich dann per ssh auf meinen Raspberry Pi ein und führt noch (wenn möglich 5sek. nach login) diesen Befehl aus "sudo /etc/init.d/hmvi restart"

Ist sowas irgendwie möglich?


Danke sehr
 
Danke, diesen Link habe ich schon gefunden, aber leider kann ich damit nichts anfangen.
 
Hallo, was würde denn dieses Script tun?:

Code:
<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_exec($connection, '/usr/local/bin/php -i');
?>
 
Kann ich dieses Skript so verwenden um sich damit per SSH einzuloggen und den Pi z.B. neu zu starten?

Code:
<?php
$connection = ssh2_connect('192.168.178.22', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_exec($connection, 'reboot');
?>
 
Das wird es wohl gewesen sein. Die PHP Datei liegt auf einer Synology mit der Web Station. Exec war wohl nicht aktiv, ich lese dort jedoch bei den PHP Erweiterungen nichts von exec und habe mal alles aktiviert und jetzt geht es. Aber was ist jetzt dafür zuständig das es dann geht.
 
Ob die von dir angestrebte Lösung ausreichend sicher ist musst du ja selbst wissen, aber ich persönlich würde einem PHP-Skript keinen vollständigen Login auf einem Server geben, der mittels sudo über Root-Rechte verfügt.

Wenn du über PHP auf den Server zugreifen musst, um Skripte zu starten solltest du mal schauen, ob du pro, auf dem Server zu startenden, Skript einen separaten SSH-Key erzeugst und dann auf dem Server in der authorized_keys-Datei mit der command-Direktive die Zuordnung zwischen Key und Skript machst (http://man.he.net/man5/authorized_keys suche nach command)

Dann kann das PHP-Skript die lokalen Keys entsprechend auswählen - hat aber auch nur die Möglichkeit die auf dem Raspberry hinterlegten Skripte auszuführen (und keinen vollständigen Systemlogin).

Gruß
Markus
 
"sudo /etc/init.d/hmvi restart"

Lösungswege sind ja bereits aufgezeigt worden. Wieso musst du denn den Dienst immer wieder neu starten? Lässt sich das nicht verhindern?
 
Ob die von dir angestrebte Lösung ausreichend sicher ist musst du ja selbst wissen, aber ich persönlich würde einem PHP-Skript keinen vollständigen Login auf einem Server geben, der mittels sudo über Root-Rechte verfügt.

Wenn du über PHP auf den Server zugreifen musst, um Skripte zu starten solltest du mal schauen, ob du pro, auf dem Server zu startenden, Skript einen separaten SSH-Key erzeugst und dann auf dem Server in der authorized_keys-Datei mit der command-Direktive die Zuordnung zwischen Key und Skript machst (http://man.he.net/man5/authorized_keys suche nach command)

Dann kann das PHP-Skript die lokalen Keys entsprechend auswählen - hat aber auch nur die Möglichkeit die auf dem Raspberry hinterlegten Skripte auszuführen (und keinen vollständigen Systemlogin).

Gruß
Markus

Sollte man das auch tun obwohl alles Lokal läuft? Von außen sind die Geräte alle nicht erreichbar.
 
Back
Top