und genauso ist es, wie du eben beschrieben hast. Ich zweigel ja selbst schon an mit, deshalb führe ich die Befehle ab und zu nochmal aus, mit unverändertem Ergebnis. :eek:
Gib mal das ‚ssh user@server „df -h“‘ im Raspberry ein und mach bitte mal einen Screenshot davon.
Und teste im IPS nochmal mit dem Array für $output…nicht, dass da am Ende eine Leerzeile ist oder keine Ahnung.
Da kann man aus der Ferne nicht mehr wirklich weiterhelfen. IPS und shell_exec funktioniert jetzt (ging am Anfang ja auch nicht und auf einmal ging es…keine Ahnung was du da gemacht hast) und den Rest musst du jetzt wohl selbst rausfinden
Grüße,
Chris
Screenshot:
<?
$output=array();
array_push($output,shell_exec('ssh user@server "df -h"'));
print_r($output);
?>
liefert:
Array
(
[0] =>
)
Kann es irgendwie daran liegen, dass ich IPS von Windows zu RPI übertragen habe nach Anleitung?
Nein, kann ich mir nicht vorstellen, man überträgt da ja nur Scripte und Co und nicht das Install an sich. Hab aber leider sonst auch grad keine Ahnung was da schief läuft. Da muss man direkt dran sitzen und bissi rumprobieren…
-Chris-
…ich bin unsicher ob es das ist was Du meinst, bzw. ob das folgende Beispiel zu Deinem Problem passt…
In meinen Modulen verwende ich teilweise einen Zugriff auf einen „entfernten“ Raspberry Pi, also einen der über LAN, WLAN oder WAN verbunden ist.
set_include_path(__DIR__.'/libs');
require_once (__DIR__ . '/libs/Net/SSH2.php');
$ssh = new Net_SSH2($this->ReadPropertyString("IPAddress"));
$login = @$ssh->login($this->ReadPropertyString("User"), $this->ReadPropertyString("Password"));
if ($login == false)
{
IPS_LogMessage("IPS2GPIO SSH-Connect","Angegebene IP ".$this->ReadPropertyString("IPAddress")." reagiert nicht!");
$Result = "";
return false;
}
$Result = $ssh->exec($Command);
$ssh->disconnect();
…ich hoffe die Variablennamen sind selbstsprechend.
Eingebunden ist die phpseclib, diese eröffnet noch diverse andere Möglichkeiten der Kommunikation.
Joachim
ich könnte es damit zumindest mal versuchen? wo genau hast du die Bibliothek „libs“ auf dem Pi installiert? Unter /home/pi/libs?
Ich hatte das bei mir in „/var/lib/symcon/scripts/…“ eingebaut Is aber relativ egal, nur der include-Pfad oben in deinem Script muss halt passen und möglich sein
Grüße,
Chris
nochmal der Vollständigkeit halber hier mein Skript, der jetzt funktioniert:
*<?
//SSH*Login*:*Beginn
include('/var/lib/symcon/scripts/Net/SSH2.php');//*ggf.*den*Pfad*anpassen
//*IP*vom*Raspberry
//$ssh = Net_SSH2('192.168.178.xx');//IP*des*NAS*eintragen
$ssh = NEW Net_ssh2('192.168.178.xx');
//Anmeldeuser*und*Passwort*für*Freenas*nach*UFT8*konvertieren
//nur*mit*UTF8*Einstellung*klappt*auch*ein*putty*login
//ohne*diese*Konvertierung*erscheint*immer*"Login*Failed"*auch*hier*per*ssh->login
$username=UTF8_encode('xxx');
//$username*=*utf8_encode('xxx');
//$password*=*utf8_encode('xxx');
$password=UTF8_encode('xxx');
IF(!$ssh->login ($username,$password))//*Hier*der*echte*Login
{
********exit('Login*Failed');
}
//SSH*Login:*Ende
$resultgpu=$ssh->exec("/bin/echo mem > /sys/power/state 2>/dev/null");
?>
Hallo,
bin grade auf diesen Thread gestossen. Ich nutze die pphpseclib um aus IPS den HDMI Ausgang von einem RPi3 auszuschalten (Raspberry PI 2 mit 8" Touchscreen zur Bedienung des IPS-WebFront - Seite 12)
hier mein Script:
<?
include('/ssh/SSH2.php');
$ssh = NEW Net_ssh2('192.168.5.28');
$username=UTF8_encode('pi');
$password=UTF8_encode('passwort');
IF(!$ssh->login ($username,$password))
{
exit('Login*Failed');
}
$ssh->exec("vcgencmd display_power 0");
?>
Die include Dateien hab ich von Drapple (Seite 1 dieses Threads)
Beim ausführen des Scripts erhalte ich fehlermeldungen, der HDMI Ausgang schaltet aber trotzdem schön um, scheint also zu funktionieren. Aber was bedeuten die meldungen und wie bekomme ich die weg ?
Warning: unpack(): Type N: not enough input, need 4, have 1 in C:\IP-Symcon\scripts\ssh\SSH2.php on line 2092
Warning: extract() expects parameter 1 to be array, boolean given in C:\IP-Symcon\scripts\ssh\SSH2.php on line 2092
Notice: Undefined variable: length in C:\IP-Symcon\scripts\ssh\SSH2.php on line 2093
Ich würde mal die aktuelle phpseclib versuchen…
GitHub - phpseclib/phpseclib: PHP Secure Communications Library
Grüße,
Chris
Das hatte ich schon versucht, da kommt aber ein neuer Fehler, googlen brachte mich auf irgendwas mit: ich brauch noch einen Autoloader ?! da bin ich als php-laie am Ende, das was z.B. hier steht bekomme ich auch nicht umgesetzt.
Ich verstehe auch nicht, warum der code aus #68 scheinbar bei euch bzw. beim Autor von #68 einfach so (ohne autoloader) funktioniert, bei mir aber nicht. Welche version von phpseclib nutzt ihr ? ich hab jetzt den aktuellen „Master Branch“ von Github ausprobiert.
oder hab ich irgendeinen total banalen Fehler drin den ich gerade übersehe ?
Hi!
Hast du deinen Fehler mittlerweile selbst gefunden?
Ich vermute mal, dass es an deinem include liegt.
Windows =
Linux = /
…und dazu könntest du es noch mit dem kompletten Pfad probieren oder mit IPS_GetKernelDir() „zusammenbauen“ oder mit „.“ anfangen.
Grüße,
Chris
Hallo zusammen,
Ich hatte den gleichen Fehler letzte Woche ebenfalls. Habe es dann so gelöst, dass ich alle Ordner aus dem phpseclib Ordner direkt in den Scripts Ordner kopiert habe und dann im Script die /Net/SSH2.php dirket included habe. Also mir praktisch den phpseclib Ordner gespart habe. So funktioniert das ganze.
Ist wahrscheinlich nicht die schönste Lösung, funktioniert bei mir aber erstmal.
Viele Grüße
Ghostrider
Bei mir hat es erst geklappt, nachdem ich die phpseclib aus dem Branch 1.0 benutzt habe und die includes so gesetzt habe
set_include_path(DIR.’/phpseclib’);
include(‚phpseclib/Net/SSH2.php‘);
MIt der Master oder 2.0 Version hat es gar nicht geklappt und das mit dem Autoloader habe ich nicht verstanden.
MIt der Master oder 2.0 Version hat es gar nicht geklappt und das mit dem Autoloader habe ich nicht verstanden.
Das kommt mir bekannt vor
Nein, leider nicht. Hatte die letzten Tage keine Zeit bei dem Projekt weiterzumachen. Mit den verschiedenen Pfadangaben werd ich mal weiterprobieren, Danke für die Tipps.
Hallo zusammen,
benutze die $ssh-excec Methode, um damit auf meinem Raspberry Befehle auszuführen.
Das klappt bei kurzen Abfragen auch problemlos.
Wenn ich allerdings damit ein Script auf dem Raspi starte, was länger dauert (diverse Dienste beenden, neu starten etc) wird das Skript nur bis zu einem undefinierten Zeitpunkt abgearbeitet und einfach beendet.
Weiß jemand Rat, wie ich da nen timeout oder so was anpassen kann?
Danke
Marc