Jump to content

FTP Script - kann jemand helfen?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

ich bräuchte mal ein wenig Unterstützung bei der Erstellung eines FTP Scripts.

 

Das Script soll auf verschiedenen Rechnern laufen, eine Verbindung zu einem FTP Server herstellen und dann eine Datei übertragen.

 

Soweit ist es auch nicht kompliziert, so ein Script hab ich schon fertig. Aber was mir noch fehlt in diesem Script ist, dass sich die Nutzer manuell während der Laufzeit des Scriptes anmelden müssen. Ich möchte auf keinen Fall die Benutzernamen und die Passworte der Nutzer in eine Datei schreiben (verstößt gegen unsere Firmen Policies).

 

Kennt jemand eine Funktion oder einen Parameter den ich in der Befehlsdatei des Scriptes benutzen kann, damit es zu einer Abfrage nach Benutzernamen und Passwort kommt?

 

Ich hab schon viele viele Seiten über FTP gelesen aber solch eine Funktion wird einfach nicht beschrieben. Überall steht nur, dass die Abfrage automatisch kommt wenn man kein Usernamen und kein Passwort in der Datei einträgt. Das geht aber leider nicht, das Script übergibt dann immer den nächsten Eintrag aus der Datei als Benutzername und den übernächsten als Passwort.

 

Also wenn jemand da eine zündenden Idee hat die mich da weiterbringt, wäre ich ihm sehr verbunden mir dieses mitzuteilen.

 

Vielen Dank im Vorraus

Link zu diesem Kommentar

@biggi: Genau richtig erkannt, es muß eine wenn-dann Funktion da rein nur wird die nirgends beschrieben.

 

@Dr_NET: Das Script ist schon fertig (steht auch in meinem ersten Text) nur soll da auf keinen Fall ein Benutzername und das Passwort rein.

 

@CaIvin: Stimmt ;-)

 

@varnik: Leider geht das nicht. Erstens ist unser FTP Server ein Unix System (IBM RS/6000 - F50) und zweitens wandern die vorbereiteten Dateien in das jeweilige Nutzerverzeichnis da sonst die Daten ja ständig überschrieben werden würden da ja alle Nutzer diese Datei erzeugen und das öfters am Tag.

 

So langsam kommt mir der Verdacht, dass diese Funktion garnicht unterstützt wird, was ansich nicht richtig sein kann. Man muß doch in der Lage sein so ein Vorhaben durchführen zu können. FTP Clients machen das doch auch, wenn ich da nur den Nutzernamen eintrage folgt die Abfrage nach dem Passwort. Auch wenn kein Nutzer und kein Passwort eingetragen werden, wird man während der Anmeldung zur Eingabe dieser aufgefordert. Also muß es FTP doch unterstützen oder?

 

Na vielleicht findet sich ja jemand der doch eine zufriedenstellende Lösung für mich hat.

Link zu diesem Kommentar
  • 1 Monat später...

Hallo Leute, hallo loopy!

 

Ich stehe vor einem ähnlichen Problem, bei dem ich via Script (Am besten wäre aus meiner Sicht der WSH dafür geeignet) mehre Dateien aus einem FTP Verzeichnis auf ein Usershare verschieben muss, wenn eine bestimmte datei mit dem Namen "ok.txt" vorhanden ist. Prinzipiell habe ich schon alle nötigen Bedingungen und Schleifen in einem VB-Script definiert. Das einzige was mir derzeit noch fehlt ist die Syntax bzw. eine Funktion um die Dateien via FTP zu transferieren bzw sich überhaupt erstmal über FTP mit der Freigabe zu verbinden..

Das Problem mit der anmeldung lässt sich via VBS sehr einfach umschiffen, da man via Inputbox mit dem User interagiert. Dies gilt zumindest dann, wenn man von einer Windowsmaschine aus auf das FTP-Verzeichnis zugreifen möchte.

 

z.B.

 

Anmeldename = inputbox("Bitte geben sie einen Benutzernamen an")

Passwort = inputbox("Bitte das passwort eingeben")

 

 

Hilfreich wäre für mich also lediglich ein Hinweis, mit welchem Objekt ich auf ein FTP Share mittels VBS zugreifen kann. Hat da jemand eine Idee?Ich muss dort sowohl die Dateinamen lesen und auswerten als auch den Transfer starten können.

Link zu diesem Kommentar
  • 2 Jahre später...

Lieber ein bisschen spät als nie :)

 

Hier findet Ihr nun Quellcode zu einem Script, welches Euch die Möglichkeit gibt einen FTP Transfer durchzuführen. Mit Screnc.exe lässt es sich codieren, damit die Anmeldung und Pfadnamen nicht im Klartext lessbar sind. Ab **Start Encode** wird codiert.

'**Start Encode**
Const cDOM = "MeinFTPSERVER"      '= FTP Server
Const cDIR = "/usr/TEST/TEST/TEST/TEST"         '= FTP Verzeichnis
Const cFOL = "\\MeinServer\MeinShare" 'Pfad zur Dateiablage
'Auflistung von Dateien die übertragen werden sollen
FileCollect = "txt.ok\chabst.txt\grpbez.txt\kunaufb.txt\kunkon.txt\lagbst.txt\liekon.txt\lmssts.txt\matbew.txt\matmeh.txt\matpln.txt\matstm.txt\mbew.txt\probst.txt\kunstm.txt\" ' Unbedingt den String mit einem Backslash beenden und die verschiedenen Dateien mit selbigen trennen

Dim Message
ueb = "FTP Transfer Script"
MsgBox "Dieses Skript kopiert automatisch Ihre erforderlichen Text-Dateien" & vbCrLf & "in das vordefinierte Verzeichnis!" _
& vbCrLf & vbCrLf & "Dieser Vorgang kann mehrere Minuten dauern!" & vbCrLf & "Bitte schalten Sie in dieser Zeit den Rechner nicht aus!" & vbCrLf & "Sobald der Vorgang abgeschlossen ist erhalten sie eine Meldung." & vbCrLf & vbCrLf & vbCrLf & Chr(169)&",,ueb
For i = 1 to Len(Filecollect)
If Mid(FileCollect,i,1) = "\" then
	Call doFTP(Mid(Filecollect,1,i-1),"get ")
	If err = 0 then
		Message = Message  &  (Mid(Filecollect,1,i-1)) & vbCrLf
		Call doFTP(Mid(Filecollect,1,i-1),"delete ")

	End If
	Filecollect = Mid(FileCollect,i+1)	
	i = 1 
End If
Next 

MsgBox("Folgende Dateien wurden verschoben:" & vbCrLf & vbCrLf & Message )
'Aufruf der Subroutine mit Parameterübergabe des Dateinamens
  '*  1) Erstellt "ftp_get.ftp" zum download einer Datei.
  '*  2) Löscht "ftp_get.ftp" nach dem Download.
Sub doFTP(cFil, strCOM)
  '*
  '*  Deklaration von Konstanten
  '*
   Const cVBS = "ftp_get.vbs"
   Const cFTP = "ftp_get.ftp"
   Const cUSR = "Username"       '= FTP Username
   Const cPWD = "passwort"       '= FTP Passwort
   Const cWSS = "%comspec% /C "  '= FTP Aüsführen
  '*
  '*  Erstellung des Inhaltes der FTP-Befehlsdatei
  '*
   Dim strFTP
       strFTP = cFOL & cFTP
   Dim strOTF
       strOTF = "open " & cDOM & vbCrLf
       strOTF = strOTF & cUSR & vbCrLf
       strOTF = strOTF & cPWD & vbCrLf
       strOTF = strOTF & "hash" & vbCrLf
       strOTF = strOTF & "ascii" & vbCrLf
       strOTF = strOTF & "cd " & cDIR & vbCrLf
       strOTF = strOTF & strCOM & Chr(34) & cFIL & Chr(34) & " " & Chr(34) & cFOL  & cFIL & Chr(34) & vbCrLf
       strOTF = strOTF & "close" & vbCrLf
       strOTF = strOTF & "bye" & vbCrLf
  Message = Message & strFTP & vbCrLf & strOTF & vbCrLf
  '*
  '*  Löschen einer eventuell noch vorhandenen .ftp
  '*
   Dim objFSO
   Set objFSO = CreateObject("Scripting.FileSystemObject")
  '*
   If objFSO.FileExists(strFTP) Then objFSO.DeleteFile(strFTP)

   If objFSO.FileExists(strFTP) Then
       MsgBox "'" & strFTP & "' still exists!",vbExclamation,cVBS
       exit Sub
   End If
  '*
  '*  erstellen einer .ftp
  '*
   Dim objOTF
   Set objOTF = objFSO.OpenTextFile(strFTP,2,true)
       objOTF.WriteLine(strOTF)
       objOTF.Close()
   Set objOTF = Nothing
  '*
  '* FTP Transfer starten
  '*
   Dim objWSS
   Set objWSS = CreateObject("WScript.Shell")
       objWSS.Run cWSS & " ftp -i -s:" & strFTP,2,True
   Set objWSS = Nothing
  '*
   If objFSO.FileExists(strFTP) Then objFSO.DeleteFile(strFTP)
   If objFSO.FileExists(strFTP) Then
       MsgBox "'" & strFTP & "' still exists!!",vbExclamation,cVBS
       Exit Sub
   End If
  '*
   Set objFSO = Nothing
End Sub

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...