Wie bekomme ich Zugriff per SFTP auf ein Serverdatenfile

Hallo,

irgendwie verstehe ich die IPS internen SSH-Befehls-Struktur nicht…
Nach Umstellung auf SFTP-Server (Strato) kommt ich mit dem File-Download (PV.csv) über IP-Symcon nicht zurecht.
Wer kann mir helfen.
evtl. auch mit scp- Befehl…

<?
include('Net/SSH2.php');
$ssh = NEW Net_ssh2('ssh.strato.de');
$username=UTF8_encode('123456');
$password=UTF8_encode('789');
IF(!$ssh->login ($username,$password))
{
       exit('Login*Failed');
}
echo "eingeloggt
";

$datum = date('Ymd');
$filename = "/homepage/data/".$datum.".csv";

//bisher:  $pfad= "ftp://user:pw@ftp.strato.de/homepage";
//ca 14kb

######## Ab hier komm ich nicht weiter #############
//open the file
$handle = fopen("ssh2.sftp://ssh.strato.de".$filename, "r");


//Output-Buffer exceeds Limit (1048576 bytes). Operation halted.
//geht nicht: IPS_Execute( ssh2_scp_recv????($ssh????, '/data/$datum.csv', '/local/pv2.csv'));


############################################################
###REST OK ########
echo $filename . ': ' . filesize($filename) . ' Byte';

	if (file_exists($filename))
		{

	 $lines = file($filename); //Array
	 $letzterLog = $lines[count($lines)-1]; //letzte Zeile aus Log
	 $split = explode(';', $letzterLog); //aufteilen in einzelne Daten
	 print_r($split);
	 $S0 = $split[0];//Datum
	 $S01 = $split[1];//WR
.....

Gruß Konny

1 „Gefällt mir“

Hast du das ganze Mal ausserhalb von IPS nativ probiert?
Und sicher sftp oder ftps?
Ansonsten, gibt’s „wget“…das vielleicht Mal probieren…

Ausserhalb über Konsole /Fugu/Forklifter/SFTP… kein Problem…
Es ist die automatische Abfrage des Files über IPS und dessen Zerlegung …
aber wget ist schon mal ne Richtung…

Gruß Konny

grundsätzlich scheitert es an dem Verständnis SFTP-Zugang innerhalb von IPS…
Es muss doch per einfachen Befehl möglich sein das Datenfile zu holen und zu zerlegen (wie mit ftp auch)…
ich steh auf’m Schlauch…
Ich will auch nur die letzte Zeile a la tail…

Ich glaube die Frage war eher, ob du das mit dem sftp mal mit PHP ohne IP-Symcon probiert hast? Ich vermute jedes PHP Tutorial dazu sollte besser helfen können als wir :smiley: Und wenn es mit normalem PHP geht, sollte es auch in IPS gehen. Soweit ich weiß ist der Ansatz mit der PHPSecLib (gerne mal die neue Version probieren) aber schon der richtige: GitHub - phpseclib/phpseclib: PHP Secure Communications Library

paresy

danke,…
habe das Problem ohne sftp - - über http und fopen gelöst:

//FileTagesDatenCSV
$PV="pv2";
$datum = date('Ymd');
$filename ="/data/".$datum.".csv";
$ipvomsolarlog= $PV.".baurezept.de";
//kontrolle
echo $ipvomsolarlog.$filename,"\n\n";

$fp1 = fopen("http://".$ipvomsolarlog.$filename,'r');

    ob_start();    
        fpassthru($fp1);    
        fclose($fp1);    
        $daten = ob_get_contents();   
    ob_end_clean();

$eintraege = explode("\r", $daten); 
//bei Return "\r" neuer Eintrag bzw. Zeile, zähle Umbrüche:
    $anzZeilen = count($eintraege);

$werte = explode(";", $eintraege[($anzZeilen-2)]);
 //bei einem ; fängt ein neuer Wert an, Letzte Zeile (Korrektur -2)

 print_r($werte);
     //Datum;WR;PAC;Tagesertrag;Monatsertrag;Jahresertrag;Gesamtertrag
         $S0 = $werte[0];//Datum
	 $S01 = $werte[1];//Wechselrichter
... usw....