sftp wie?

Spezielle Fragen zu Netzwerk-Protokollen, DNS, Socket ...
Antworten
Benutzeravatar
gambi
Moderator
Beiträge: 316
Registriert: Mi 8. Mai 2013, 21:46
Kontaktdaten:

sftp wie?

Beitrag von gambi » Do 22. Jan 2015, 22:06

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

Benutzeravatar
gambi
Moderator
Beiträge: 316
Registriert: Mi 8. Mai 2013, 21:46
Kontaktdaten:

Re: sftp wie? -GELÖST-

Beitrag von gambi » Sa 24. Jan 2015, 20:38

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
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

tux_
Moderator
Beiträge: 948
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: sftp wie?

Beitrag von tux_ » Sa 24. Jan 2015, 21:17

Es muss INPUT OUTPUT genommen werden. Warum? Keine Ahnung.


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.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Benutzeravatar
gambi
Moderator
Beiträge: 316
Registriert: Mi 8. Mai 2013, 21:46
Kontaktdaten:

Re: sftp wie?

Beitrag von gambi » Sa 24. Jan 2015, 21:24

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste