Hallo Gambas-Gemeinde,
wie kann ich eine sftp Verbindung zwischen einem sftp Server und einem Client realisieren?
Idealerweise mit gb.net oder gb.net.curl.
gg
sftp wie?
Re: sftp wie? -GELÖST-
Ich habe jetzt eine Lösung für sftp bzw scp gefunden.
Mit den verfügbaren Gambas-Komponenten ist derzeit wohl nichts möglich.
Also wieder zur Terminalsteuerung mit Prozess: gambas code
Achtung: READ WRITE funktioniert hier nicht. Es muss INPUT OUTPUT genommen werden. Warum? Keine Ahnung.
gg
Mit den verfügbaren Gambas-Komponenten ist derzeit wohl nichts möglich.
Also wieder zur Terminalsteuerung mit Prozess: gambas code
Private $hsFTP As Process Public Sub btnConnect_Click() Dim sCommand As String[] Dim sCopy, sHost, sDatei, sOutput As String sCopy = "scp" sHost = Hostname (in der Form user @examle.com:) 'Auf den "Doppelpunkt" am Ende achten! 'Das Leerzeichen zwischen user und @ natürlich weglassen, Die Gambas Syntax verhaut das nur zu einer Mailadresse! sDatei = Remote Verzeichnis und Dateiname (/home/meineRemoteDatei) sOutput = Lokales Verzeichnis und Dateiname (/home/meineLokaleDatei) sCommand = [sCopy, sHost & sDatei, sOutput] $hsFTP = Exec sCommand For Input Output As "sftpProcess" End Public Sub sftpProcess_Read() Dim sBuffer, sPW As String sPW = Passwort für ssh sBuffer = "" Read #$hsFTP, sPuffer, Lof($hsFTP) If InStr(sBuffer, "password:") Then 'Wenn zur Eingabe des Passworts aufgefordert wird, dann... Print #$hsFTP, sPW '...übergebe das Passwort Endif If InStr(sBuffer, "100%") Then Print "Feddisch" 'Wenn der Download abgeschlossen ist, schreibe das in die Gambas-Konsole. End
Achtung: READ WRITE funktioniert hier nicht. Es muss INPUT OUTPUT genommen werden. Warum? Keine Ahnung.
gg
Re: sftp wie?
Es liegt wahrscheinlich daran, dass ein Passwort abgefragt wird. Einen Prozess "For Input Output" zu starten, bedeutet, seine Standard-Streams in Pseudo-Terminals umzuleiten, waehrend "For Read Write" einfache Pipes benutzt. Ein Programm, das eine Passwort-Abfrage durchfuehrt, moechte sein Eingabe-Geraet so einstellen, dass das Passwort bei der Eingabe nicht sichtbar wird ("kein Echo"). Da es fuer Pipes unmoeglich ist, dies zu gewaehrleisten, bricht ein solches Programm unter diesen Umstaenden i.d.R. zur Sicherheit ab. Es verlangt zumindest ein Pseudo-Terminal.Es muss INPUT OUTPUT genommen werden. Warum? Keine Ahnung.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: sftp wie?
Hallo tux_,
danke für die Erklärung. Das wäre noch der Erwähnung im Gambas-Buch wert.
Ich schicke eine Mail an Hans.
gg
danke für die Erklärung. Das wäre noch der Erwähnung im Gambas-Buch wert.
Ich schicke eine Mail an Hans.
gg
Re: sftp wie?
Hi, ich melde mich spät, aber mit einer weiteren Lösung. Dazu müssen auf dem Rechner die Pakete sshpass und sftp installiert sein:
gambas code
gambas code
Dim sFilepath, sUser, sPass, sHost, sPath, sPort, cmd As String sUser = "Username" sPass = "Password1233456" sHost = "sftpserver.example.com" sPath = "/path/to/put/the/file" sFilepath = "/tmp/FileToSend.txt" 'braucht sshpass System.Shell = "/bin/bash" cmd = "sshpass -e sftp -oBatchMode=no -b - " & sUser & "@" & sHost & ":" & sPath & " <<< $'put " & sFilepath & "'" Shell cmd With ["SSHPASS=" & sPass] Wait
Alles Gute,
tionov
tionov
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste