Zum Inhalt springen

Datei von FTP auf SFTP versenden


Empfohlene Beiträge

Hi,

Ich habe hier ein Script, dieses sorgt dafür das ein SFTP Server sich von einem Anderen Rechner eine Datei holt.

Dies soll nun aber nichtmehr geschehen, nun soll ein FTP-Server diese Datei an den SFTP-Server schicken.

Leider blick ich da nicht ganz durch und hoffe das ihr mir helfen könnt =)

Hier der Code:

:: Batch-Datei zum Abruf von CAS-Dateien auf

:: einem SFTP-Server, und nach Erfolg die

:: Remote-Dateien in ein Backup-Verzeichnis

:: verschieben.


@ECHO OFF


:: Anpassbare Settings

SET ip_address=192.168.140.181

SET login_name=User01

SET password=1234

SET log_dir=.\LOG

SET save_dir_main=G:\FTP-Abruf\FTP-Sandbox\Local

SET server_backup=Backup

SET server_output=Output

SET cas_dat_wildcard=CAS*.dat


:: Falls notwendig ein Log-Verzeichnis erstellen 

IF NOT EXIST %log_dir% MD %log_dir%


:: Log-Datei definieren

:: Zu Beginn Standardmässig die 0 zwischen Datum und Zeit Stellen

SET logfile=.\LOG\LOG_%date:~6,4%%date:~3,2%%date:~0,2%0%time:~1,1%%time:~3,2%%time:~6,2%.LOG

:: Dann überprüfen ob die die Stunde bei der Uhrzeit zweistellig ist 

IF %time:~0,2% GEQ 10 SET logfile=.\LOG\LOG_%date:~6,4%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%.LOG


:: ALARM-Datei definieren

SET alertfile=.\alert.txt


:: Falls notwendig ein Temp-Verzeichnis im Save-Verzeichnis erzeugen

SET save_dir_temp=%save_dir_main%\Temp

IF NOT EXIST %save_dir_temp% MD %save_dir_temp%>> %logfile%


:: Kopfzeile

ECHO %date:~0,10% %time:~0,8%;********************************************************************************>> %logfile%                    

ECHO %date:~0,10% %time:~0,8%;*                Abruf vom %date:~0,10% um %time:~0,8%                          *>> %logfile%

ECHO %date:~0,10% %time:~0,8%;********************************************************************************>> %logfile%


:: Zeige Presets an

ECHO %date:~0,10% %time:~0,8%;IP-Adresse      : %ip_address%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;Login-Name      : %login_name%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;Passwort        : %password%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;Save-Dir Main   : %save_dir_main%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;Save-Dir Temp   : %save_dir_temp%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;FTP-Backup-Dir  : %server_backup%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;FTP-Icoming-Dir : %server_output%>> %logfile%

ECHO %date:~0,10% %time:~0,8%;CAS-DAT-Wildcard: %cas_dat_wildcard%>> %logfile%


:: ##########################################################################################

:: # Schritt 1: Überprüfen ob eine alert.txt - Datei existiert 

:: #	Wenn ja dann BATCH abbrechen, ansonsten normal weiter. Damit soll Erzwungen werden das sich ein Administrator der Sache annnimmt.

:: #	Die alert.txt wird erzeugt falls ein Warning (z.B. Permission denied) auftritt, welche evtl. zu einem Dateiverlust führen kann.

:: ##########################################################################################

IF NOT EXIST alert.txt GOTO NoAlertFile

ECHO %date:~0,10% %time:~0,8%;Datei alert.txt gefunden. BATCH-Abbruch!>> %logfile%

GOTO End


: NoAlertFile


:: Überprüfe ob ein ftp_getfiles-Script existiert um es evtl. zu löschen

IF EXIST ftp_getfiles.dat DEL ftp_getfiles.dat>> %logfile% 


IF NOT ERRORLEVEL 1 GOTO DelGetFilesScrSuccess

IF ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Script "ftp_getfiles.dat" konnte NICHT gelöscht werden!>> %logfile%

GOTO End


: DelGetFilesScrSuccess

        ECHO %date:~0,10% %time:~0,8%;Script "ftp_getfiles.dat" wurde erfolgreich gelöscht.>> %logfile%



:: ##########################################################################################

:: # Schritt 2:	a) Verschieben der Remote-Dateien auf dem Server von dem Outgoing-Verzeichnis in den Root für die FTP-Uebertragung

:: #		 Uebertragung der Dateien aus dem Server-Root auf den Client (FTP-GET)

:: #   	Dies wird insgesamt maximal dreimal versucht.

:: ##########################################################################################

:: Erzeuge ein neues "ftp_getfiles.dat"

ECHO a>> ftp_getfiles.dat

ECHO %password%>> ftp_getfiles.dat

ECHO mv ./%server_output%/%cas_dat_wildcard% ./>> ftp_getfiles.dat

ECHO lcd %save_dir_temp%>> ftp_getfiles.dat

ECHO get %cas_dat_wildcard%>> ftp_getfiles.dat


ECHO mv %cas_dat_wildcard% ./%server_backup%>> ftp_getfiles.dat


:: Öffne Verbindung zum SFTP-Server und Starte "ftp_getfiles.dat" - Versuch 1

ECHO %date:~0,10% %time:~0,8%;Dateien von FTP-Server übertragen: Versuch 01>> %logfile%

sftpc %login_name%@%ip_address% < ftp_getfiles.dat>> %logfile%

:: psftp %ip_address% -l %login_name% -pw %password% -b ftp_getfiles.dat -bc -batch >> %logfile%

IF NOT ERRORLEVEL 1 GOTO GetFilesScrSuccess

IF ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Dateien wurden NICHT erfolgreich vom FTP-Server übertragen!>> %logfile%


:: Öffne Verbindung zum SFTP-Server und Starte "ftp_getfiles.dat" - Versuch 2

ECHO %date:~0,10% %time:~0,8%;Dateien von FTP-Server übertragen: Versuch 02>> %logfile%

sftpc %login_name%@%ip_address% < ftp_getfiles.dat>> %logfile%

::psftp %ip_address% -l %login_name% -pw %password% -b ftp_getfiles.dat -bc -batch >> %logfile%

IF NOT ERRORLEVEL 1 GOTO GetFilesScrSuccess

IF ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Dateien wurden NICHT erfolgreich vom FTP-Server übertragen!>> %logfile% 


:: Öffne Verbindung zum SFTP-Server und Starte "ftp_getfiles.dat" - Versuch 3

ECHO %date:~0,10% %time:~0,8%;Dateien von FTP-Server übertragen: Versuch 03>> %logfile%

sftpc %login_name%@%ip_address% < ftp_getfiles.dat>> %logfile%

::psftp %ip_address% -l %login_name% -pw %password% -b ftp_getfiles.dat -bc -batch >> %logfile%

IF NOT ERRORLEVEL 1 GOTO GetFilesScrSuccess

IF ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Dateien wurden NICHT erfolgreich vom FTP-Server übertragen!>> %logfile%

GOTO End


: GetFilesScrSuccess

        ECHO %date:~0,10% %time:~0,8%;Daten wurden erfolgreich vom FTP-Server übertragen!>> %logfile%


:: ##########################################################################################

:: # Schritt 3: Bei einem Erfolg -> Aktuelle LOG-Datei nach einem "Warning" durchsuchen

:: #	Wenn kein Warning gefunden wurde, da geht der BATCH ganz normal weiter. 

:: # 	Sollte ein Warning in der LOG-Datei vorkommen, dann wird eine "alert.txt" erzeugt und der BATCH wird abgebrochen

:: ##########################################################################################

FIND %logfile% "Warning" >> %logfile%

IF ERRORLEVEL 1 GOTO NoWarningFound

IF NOT ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Es wurde mindestens 1 "Warning" in %logfile% gefunden!>> %logfile%

FIND %logfile% "Warning" >> %alertfile%

GOTO End


: NoWarningFound

	ECHO %date:~0,10% %time:~0,8%;Kein "Warning" in %logfile% gefunden!>> %logfile%	


:: ##########################################################################################

:: # Schritt 3: Bei einem Erfolg -> Dateien aus dem Temp-Vereichnis in das offizielle Verzeichnis verschieben

:: ##########################################################################################


:: Überprüfen ob Dateien im TEMP-Veichnis vorhanden sind

SET count=0

FOR %%i IN (%save_dir_temp%\%cas_dat_wildcard%) DO SET /a count+=1

IF NOT "%count%"=="0" GOTO LookForFileSuccess

IF "%count%"=="0" ECHO %date:~0,10% %time:~0,8%;KEINE gültigen Dateien im TEMP-Verzeichnis vorhanden!>> %logfile%

GOTO End


: LookForFileSuccess

	ECHO %date:~0,10% %time:~0,8%;Gültige Dateien im TEMP-Verzeichnis vorhanden!>> %logfile%


:: Dateien aus dem Temp-Verzeichnis in das Save-Verzeichnis verschieben (mit UnterdrÂckung der Best„ttigungsaufforderung)

MOVE %save_dir_temp%\%cas_dat_wildcard% %save_dir_main% >> %logfile%

IF NOT ERRORLEVEL 1 GOTO MoveFilesSuccess

IF ERRORLEVEL 1 ECHO %date:~0,10% %time:~0,8%;Dateien wurden NICHT erfolgreich vom TEMP ins SAVE verschoben!>> %logfile%

GOTO End


: MoveFilesSuccess

	ECHO %date:~0,10% %time:~0,8%;Dateien wurden erfolgreich vom TEMP ins SAVE verschoben.>> %logfile%


: End


:: Kopfzeile

ECHO %date:~0,10% %time:~0,8%;********************************************************************************>> %logfile%                    

ECHO %date:~0,10% %time:~0,8%;*                    GetFiles BATCH abgeschlossen!                             *>> %logfile%

ECHO %date:~0,10% %time:~0,8%;********************************************************************************>> %logfile%	

[/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...