Veröffentlicht 5. März 201015 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.