zunächst auf diesem Weg einen guten Start in ein gesundes und erfolgreiches neues Jahr.
Ich möchte gerne aus einem Symcon-Script per SFTP eine Datei zu einem IONOS-Server übertragen. FTP funktioniert leider nicht mehr, da IONOS etwas geändert hat.
PHP benötigt dazu eine Library:
use phpseclib\Net\SFTP;
$sftp = new SFTP($host, 22);
if (!$sftp->login($user, $pass)) {
echo "sucess";
}
Kann mir jemand einen Tipp geben wie und wo ich diese in der SymBox ablegen muss?
im Prinzip geht das fast überall. Ich würde es aber vermutlich unter /var/lib/symcon/scripts/phpseclib machen. Dann hast du die auch im Backup mit drin.
Ich habe das Verzeichnis nach “/mnt/data/symcon/scripts/phpseclib” kopiert.
Dann das Script:
use phpseclib\Net\SFTP;
// SFTP-Credentials
$host = "paperlesspaper.harrykellner.de";
$user = "p123456789";
$pass = "**********";
$sftp = new SFTP($host);
$sftp->login($user, $pass);
Es kommt folgende Fehlermeldung in der Zeile
$sftp = new SFTP($host);
Fatal error: Uncaught Error: Class "phpseclib\Net\SFTP" not found in /mnt/data/symcon/scripts/21662.ips.php:21
Stack trace:
#0 {main}
thrown in /mnt/data/symcon/scripts/21662.ips.php on line 21
Ich finde meinen Fehler leider nicht - Hilfe.
In diversen Anleitungen wird immer von einem Composer gesprochen. Muss ich den auch noch auf der SymBox installieren?
Die phpseclib besteht aus diversen Dateien und Klassen.
Ich nutze dafür einen autoloader, welchen du eventuell für dich abwandeln kannst ($LibPath anpassen).
das Modul SSH-Client läuft (Danke dafür) und ein ‘ls’ liefert den Inhalt des Server-Verzeichnisses.
Wie würde der Commando-String für einen Datei-Upload lauten? In der Doku habe ich kein passendes Beispiel gefunden. Etwas mit ‘cp’ für kopieren? Ich bin nicht so der Linux-Befehle-Spezialist.
Das ist nur ein SSH Client. Damit kannst du nix hochladen.
Er nutzt aber die gleiche Library.
Für dein Script wäre der autoloader wichtig.
Da ich die SFTP Klasse nie benutzt habe, kann ich dir auch nicht sagen wie du damit etwas hochladen kannst.
das mit include führt von einem Fehler zum nächsten. Irgendwie ist in der phpseclib-Library eine Verwirrung mit den Verzeichnissen (phpseclib3 und phpseclib4) drin. Da komme ich nicht weiter.
Das SSH-Client-Modul von Nall-chan kann leider keine Dateien hochladen, obwohl es in der SSH-Doku ein scp gibt? Auch mit der Syntax komme ich nicht klar. Seinen autoloader-Tipp verstehe ich nicht, dafür bin ich zu wenig Informatiker.
Es muss doch einen Weg geben, aus einem IP-Symcon-Script eine JSON-Datei an einen Web-Server zu senden.
Ich habe nach SFTP und SSH gegoogelt und da werden verschiedene Befehle aufgezeigt.
ls, cd, mkdir usw. funktionieren - wahrscheinlich weil sich das lokal auf dem Server abspielt. U.a. wird auch cp und scp erwähnt und daher dachte ich das wären allgemeine SSH-Kommandos.
Das mit dem Master-Zweig ist tatsächlich so - mein Fehler! Ich werde den Branch 3.0 nochmals versuchen. In der Versionshistorie steht bei Master ja “Do not use in production” - habe ich natürlich überlesen. Sorry.
leider wieder der Class-not-found-Fehler. Die Verzeichnisstruktur scheint nicht zu passen.
Ich habe den Branch 3.0 benutzt und wie in Deinem Screenshot nach scripts/phpseclib/phpseclib kopiert. In den Codezeilen steht jedoch phpseclib3. Auch in den Files wird phpseclib3 genutzt? Oder korrigiert das die Autoloaderzeile?
Auch das ändern auf scripts/phpseclib/phpseclib3 funktioniert nicht.