landstreicher
Goto Top

Datenübertragung SFTP u. SCP per Batch ?

Hallo,

Ich habe folgendes Problem.
Ich muss Daten von einem Server holen, auf dem im moment noch FTP aktiv ist, was aber aus Sicherheitsgründen demnächst abgeschaltet wird.
Im mom. habe ich das ganz einfach gelöst

echo Erzeuge ftp-file
goto :create1
:eins1
echo --- starte FTP-Transfer...
ftp -s:hole_logfiles.ftp
echo --- fertig.
ping 127.0.0.1 -n 1 >nul
del hole_logfiles.ftp
goto :starten

:create1
Echo;
Echo erstelle FTP-File
echo open %zu%>>hole_logfiles.ftp
echo %name%>>hole_logfiles.ftp
echo %cword%>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo bin>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo prompt>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo cd /home/syscheck >>hole_logfiles.ftp
echo lcd C:\FTPDaten>>hole_logfiles.ftp
echo get e1check>>hole_logfiles.ftp
echo bye>>hole_logfiles.ftp
Echo file wurde erzeugt.
ping 127.0.0.1 -n 2 >nul
goto :eins1

Wird nun aber SFTP/SCP aktiviert, weiss ich nicht wie ich das weiter automatisiert betreiben kann, da Windows unter DOS, soweit mir bekannt ist, kein SFTP kennt.

kann mir da jemand helfen ?

Content-ID: 67473

Url: https://administrator.de/forum/datenuebertragung-sftp-u-scp-per-batch-67473.html

Ausgedruckt am: 25.12.2024 um 14:12 Uhr

Iwan
Iwan 30.08.2007 um 11:31:00 Uhr
Goto Top
Als Kommandozeilen-Client empfiehlt sich PSFTP aus den PuTTY-Downloads: http://www.wintotal.de/Software/index.php?id=2350
Gib 'open servername' ein und authentifiziere Dich. Mit dem Befehl "help" kann man einen Blick auf die zur Verfügung stehenden Kommandos werfen, welche mit einer Funktionsbeschreibung versehen sind.
DerBiba
DerBiba 30.08.2007 um 11:32:52 Uhr
Goto Top
WinSCP (winscp.net) ist kostenlos und unterstützt SFTP (FTP over SSH) als auch SCP und kann auch per Script genutzt werden.

Details dazu findest du in den englischen FAQ's unter http://winscp.net/eng/docs/scripting

Falls SFTP aber FTP over SSL, also eigentlich "FTPS" gemeint war (wird sehr oft durcheinander geworfen), dann kannst du Core FTP LE nutzen. Ebenfalls kostenlos und erhältlich unter coreftp.com.

So long.

Biba
Landstreicher
Landstreicher 03.09.2007 um 12:41:26 Uhr
Goto Top
Hi Biber,

danke für den Link, aber für mich ist da nicht ganz ersichtlich wie ich das nun in eine Batch packen kann.

hast du eine lösung für mich parat ? ;)

gruß landstreicher
DerBiba
DerBiba 03.09.2007 um 13:17:45 Uhr
Goto Top
Servus Landstreicher,

also parat nun nicht, aber wenn du mal bitte den Ablauf definierst was wann wie und wo passieren soll, dann kann ich dich gerne unterstützen. In deinem Beispiel hast du nämlich ein paar Variablen verwendet die sich mir nicht erklären. Und von welchem Tool sprechen wir denn da? WinSCP, CoreFTP? Und welche Protokoll wird genau verwendet? FTP over SSH oder FTP over SSL ?

zB. "echo open %zu%>>hole_logfiles.ftp"
Da erklärt sich mir aus deinem Code nicht, wer oder was %zu% ist.

Am besten in der Form:
01) Verbindung zum FTP
01a) Wo können die Logindaten (User/PWD) abgelegt werden? Im Script oder als sep. File ?
02) Übertrage Daten von FTP zu Lokal
02a) Was wenn diese Daten vorhanden sind?

Bedenke bitte möglichst vorab alle "Was-Wenn-Fragen", dann geht das alles recht fix, solange mich kein Kunde hier stört face-smile

Biba
Landstreicher
Landstreicher 03.09.2007 um 14:03:26 Uhr
Goto Top
ahja du hast recht habe ich ganz vergessen ;)

also:
echo open %zu%>>hole_logfiles.ftp ---> %zu% wurde vorher definiert set zu=rechnername
echo %name%>>hole_logfiles.ftp ---> %name% = user
echo %cword%>>hole_logfiles.ftp ---> %cword% = pw

ich habe aus einer batch ein temporäres ftp file erstellt welches dann kurz erstellt wird und anschliessend wieder gelsöcht wird (sicherheitstechnisch nicht das beste aber besser als nix)
das habe ich getan, damit man rechner, user und pw nicht so schnell findet.

die batch habe ich anschliessend in eine exe umgewandelt, das man auch hier nicht das pw rausfinden kann.

Ablauf:
doppelkick auf die ftp.exe
ftp datei wird erstellt:
echo Erzeuge ftp-file
goto :create1
:eins1
echo --- starte FTP-Transfer...
ftp -s:hole_logfiles.ftp
echo --- fertig.
ping 127.0.0.1 -n 1 >nul
del hole_logfiles.ftp
goto :starten

:create1
Echo;
Echo erstelle FTP-File, aufgaben abgearbeitet und anschliessend wieder gelöscht.
echo open %zu%>>hole_logfiles.ftp
echo %name%>>hole_logfiles.ftp
echo %cword%>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo bin>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo prompt>>hole_logfiles.ftp
echo.>>hole_logfiles.ftp
echo cd /home/syscheck >>hole_logfiles.ftp
echo lcd C:\FTPDaten>>hole_logfiles.ftp
echo get e1check>>hole_logfiles.ftp
echo bye>>hole_logfiles.ftp
Echo file wurde erzeugt.
ping 127.0.0.1 -n 2 >nul
goto :eins1


1) ???
1a)die etwas kritischeren daten wie User und PW sollten so sicher wie möglich versteckt werden.
2) ja die daten sollen local bzw. auch auf eine andere maschine übertragen werden.
2a) wenn die daten vorhanden sind, sollen sie einfach überschrieben werden, besser wäre natürlich eine abfrage, aber ich glaube nicht das das per ftp so einfach geht.

so nuun habe ich die qual der wahl .. entweder ich nutze winscp oder psftp. mir ist letztendlich wurscht welches tool ich am ende benutze, die hauptsache ist, ich bekomme das wieder in eine batch gebastelt.

ich hoffe ich habe keine fragen offen gelassen, wenn doch meld dich nochmal pr PN und lass dich nicht stressen :D

mfg landstreicher.
Landstreicher
Landstreicher 11.09.2007 um 10:02:57 Uhr
Goto Top
SOOOOO Problem gelöst.

ich benutze nun doch "psftp" und man glaubt es kaum ich übertrage nun und sichere vorher face-wink

hier mal meine bastelei...

@echo off
pushd "D:\PowerPlay\mdl"
echo zeige Models:
echo --------------------
echo;
for /f "delims=" %%i in ('dir /b /tc') do call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
echo setze Variablen
set "Variable=%~1"
echo %Variable%
goto :set


:set
echo .... verschiebe und uebertrage ....
echo cd /home/cognos/model/newModels > D:\ftpmdl.bat
echo lcd D:\PowerPlay\mdl >>D:\ftpmdl.bat
echo pwd >>D:\ftpmdl.bat
echo mv %Variable% backup/%Variable% >>D:\ftpmdl.bat
echo put %Variable% >>D:\ftpmdl.bat
echo bye >>D:\ftpmdl.bat
C:\Downloads\psftp.exe cognos@e8xxxxxxx.bxxxxxx.txxxxxxxx.de -pw soso -b D:\ftpmdl.bat
goto :eof

ein problem gibt es da allerdings, sind die dateien nicht vorhanden im zielverzeichnis und er soll ein move der datei in ein backupverzeichnis machen, werden die neuen files nicht übertragen.
das kann man soweit ich das getestet habe nur umgehen, wenn man die batch etwas umbaut und erst die dateien moved und dann überträgt.

sollte jemand besseres im angebot haben ... ich bin ganz hellhörig face-wink