Avatar billede steen_hansen Forsker
11. august 2011 - 22:01 Der er 20 kommentarer og
1 løsning

FTP: Up/download af fil

Jeg skal lave et upload af en fil v.hj.a. et batch-job og FTP. Så vidt jeg kan se på nettet, skal man køre scriptet fra en bat-fil, og hente login-oplysninger fra f.eks. en txt-fil. Nogen, der kan hjælpe?

Undlad venligst at lægge et svar, før jeg beder om det.
Avatar billede steen_hansen Forsker
11. august 2011 - 22:24 #1
PS: Hvis der ligger en fil med samme navn på serveren, skal den overskrives, uden at brugeren bliver promptet for noget.
Avatar billede steen_hansen Forsker
11. august 2011 - 23:33 #2
PPS: Upload-delen:

1. Der skal connectes automatisk til serveren, uden brugerinput
2. Fil skal uploades
3. Hvis der ligger en fil med et identisk navn i forvejen, skal filen på serveren overskrives, uden brugerinput
4. Luk med Quit eller Bye

Det er et batchjob, der skal køres automatisk hver nat, og alt skal kunne afvikles uden brugerinput. Jobbet skal være afviklet, inden personalet møder om morgenen.
Avatar billede MSI-AOC Nybegynder
12. august 2011 - 01:30 #3
Lav følgende batchscript:

echo user Brugernavn>>ftpcmd.dat
echo Password>>ftpcmd.dat
echo bin>>ftpcmd.dat
echo put %1>>ftpcmd.dat
echo disconnect>>ftpcmd.dat
echo bye>>ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.server.dk
del ftpcmd.dat

og gem det som "ftpupload.bat" f.eks.

Lav et scheduled task der kører ftpupload.bat hver nat. Skriv filnavnet på filen der skal uploades, som argument/start parameter.

Så for at den bruger som der kører jobbet har modify permissions på den mappe batch scriptet ligger i
12. august 2011 - 08:02 #4
Jeg kan bekræfte principet i #3 - har lige bygget lidt extra på ->


@echo off

REM *
REM *

if exist %TEMP%\ftpcmd.dat del %TEMP%\ftpcmd.dat
echo user Brugernavn>>%TEMP%\ftpcmd.dat
echo Password>>%TEMP%\ftpcmd.dat
echo bin>>%TEMP%\ftpcmd.dat
echo put %1>>%TEMP%\ftpcmd.dat
echo disconnect>>%TEMP%\ftpcmd.dat
echo bye>>%TEMP%\ftpcmd.dat
ftp -n -s:%TEMP%\ftpcmd.dat ftp.server.dk
del %TEMP%\ftpcmd.dat
echo %DATE% %TIME% >>ftp.log
echo Transfered %1 >>ftp.log



I mit tilfælde kørte det hele tiden i en slags loop - noget i denne retning ->


@echo off
REM *
REM *

:LOOP
if exist %1 goto DOIT
REM * Wait ~10 min.
PING 1.1.1.1 -n 1 -w 600000 >NUL
goto LOOP

:DOIT
if exist %TEMP%\ftpcmd.dat del %TEMP%\ftpcmd.dat
echo user Brugernavn>>%TEMP%\ftpcmd.dat
echo Password>>%TEMP%\ftpcmd.dat
echo bin>>%TEMP%\ftpcmd.dat
echo put %1>>%TEMP%\ftpcmd.dat
echo disconnect>>%TEMP%\ftpcmd.dat
echo bye>>%TEMP%\ftpcmd.dat
ftp -n -s:%TEMP%\ftpcmd.dat ftp.server.dk
del %TEMP%\ftpcmd.dat
echo %DATE% %TIME% >>ftp.log
echo Transfered %1 >>ftp.log
del %1

goto LOOP

Avatar billede steen_hansen Forsker
12. august 2011 - 14:51 #5
MSI-AOC og karise_larry, det ser meger fornemt ud.

Jeg går ud fra, at jeg skal indsætte user/pass i ftpcmd.dat, så filen kommer til at se nogenlunde sådan her ud?

steen.dk  REM username
********  REM password
12. august 2011 - 16:31 #6
De
REM *
jeg har isat er bare for at du der lige kan beskrive hvad dette er for noget incl version, dato, 'forfatter', ... så du/andre ved det en anden gang...
Har ikke noget som helst med koden at gøre iøvrigt...


Filen ftpcmd.dat bliver midlertidig oprettet af ovenstående og slettet igen efter kørsel.
Avatar billede MSI-AOC Nybegynder
12. august 2011 - 23:56 #7
Skift "Brugernavn" og "Password" ud med dit respektive username/password i disse linier:


echo user Brugernavn>>%TEMP%\ftpcmd.dat
echo Password>>%TEMP%\ftpcmd.dat


og indsæt det rigtige hostname/IP istedet for ftp.server.dk:


ftp -n -s:%TEMP%\ftpcmd.dat ftp.server.dk
Avatar billede MSI-AOC Nybegynder
13. august 2011 - 00:01 #8
@karise_larry:

Grunden til at jeg ville lave en scheduled task i stedet for et loop er der 2 gode grunde til:

1. Du kan styre præcis hvornår scriptet skal kaldes
2. Windows Script Host og cmd processer = big time memory leak. Hvis scriptet står og kører i en uendelighed kan du ikke være sikker på at memory bliver deallokeret.
13. august 2011 - 00:08 #9
... det var bare som eksempel *S*
Avatar billede steen_hansen Forsker
13. august 2011 - 10:52 #10
Det ser dælme godt, drenge :)

Jeg vil teste det af hurtigst muligt.

Jeg har faktisk et tillægsspørgsmål til Jer, jeg sætter point op:

Jeg har et lille script, som zipper filer og mapper fra mappen Dokumenter. Det er så meningen, at denne zippede fil skal uploades til serveren hver nat, og det bliver gjort med Jeres script, og tidspunkt for afvikling af zipning og upload vil blive sat i Planlagte opgaver.

Kan det på nogen måde styres, så der højest kommer til at ligge 2 eller 3 filer på serveren? Filer, som er mere end 2 eller 3 dage gamle, skal slettes fra serveren, men først når upload af den aktuelle fil er færdig. Hvis det kan lade sig gøre, er det vel bare at sætte "tillægsscriptet ind sidst i BAT-filen.

Og kan det hele evt. logges lokalt? Der kom et ekstra spørgsmål, jeg opretter gerne et helt nyt spørgsmål, men nu ved I, hvad mine ønsker er :)
Avatar billede steen_hansen Forsker
13. august 2011 - 10:53 #11
Og forøvrigt, tak for eksemplet, karise_larry :) Det er altid rart at lære.
Avatar billede steen_hansen Forsker
13. august 2011 - 10:55 #12
Kan man ikke sætte point op længere? Eller er jeg bare blevet blind?
Avatar billede steen_hansen Forsker
13. august 2011 - 10:58 #13
Lidt mere spam, I får lige scriptet, som danner [dags-dato].zip (testen er lavet på min egen PC, fungerer fint):

FOR %%A IN (%DATE:/=%) DO SET Today=%%A

C:\Programmer\7-Zip\7zG.exe a -tzip "C:\Documents and Settings\Steen\Skrivebord\Steen test\%TODAY%.zip" "C:\Documents and Settings\Steen\Skrivebord\Creative"
13. august 2011 - 11:27 #14
Ref #12: Nej - du kan ikke ændre 'tildelte' Point. Det er heller ikke pointen; bare at folk pænt vender tilbage...
13. august 2011 - 11:31 #15

echo %DATE% %TIME% >>ftp.log
echo Transfered %1 >>ftp.log

'Logger' Dato/Tid i filen ftp.log hver gang. Der skal du selvfølge definere en fuld sti til denne et passende sted...
13. august 2011 - 11:44 #16
Ref #13: Hmmm... - Kan forestille mig at et eller andet CMD/BAT trix kigger i filen ftp.log og 'henter' 6. sidste linie og 'piller' DATE feltet ud ? Det burde jo være DATE 3 registerede dage bagud.
Og med den variabel køres et lignende script som DEL "DATE-3-registerede-dage-bagud".zip ...
Hvis du kan følge mig ?

Derfor bruges netop den logfil...

Hvis det slutlige script eksempelvis ikke kører nogle dage, vil den netop præcist bevare de sidste 2 *.zip filer, uanset hvornår scriptet er kørt... det er tanken...

PS: Filen ftp.log bør også overføres til passende sted ...

---
Avatar billede steen_hansen Forsker
13. august 2011 - 12:19 #17
Hej karise_larry

Det lyder meget plausibelt. Jeg skal nok holdes lidt i hånden her, jeg skal nok have det serveret.

Jeg vil prøve at google lidt, men finder du på noget, skal du være mere end velkommen. Og MSI-AOC også, selvfølgelig :)
13. august 2011 - 12:30 #18
Bonus: ... For at checke om din ftp.server.dk kan 'ses' kan du jo PING den først. Hvis det går godt, så fortsætte med scriptet. Ellers en eller anden ERROR.log


Bonus: ... For checke at FTP overførsel er gået godt, kan du jo i samme omgang føre *.zip filen tilbage - med GET - til et MIDLERTIDIG sted på den lokal PC. Derefter checke om den er der og er størrer end 0 bytes... hvis der så ikke er tilfældet, så en eller anden ERROR.log ???
Avatar billede steen_hansen Forsker
21. januar 2013 - 16:44 #19
MSI-AOC og karise_larry, kan I ikke lægge et svar, så jeg kan få lukket spørgsmålet?
21. januar 2013 - 23:06 #20
Ping...

(Dette er så et [svar] ...)
Avatar billede steen_hansen Forsker
04. juni 2015 - 17:07 #21
MSI-AOC, du må sige til, hvis du vil have point. Spørgsmålet er meget gammelt, så det lukkes i denne omgang.

.... og hvor er jeg vild med at efterfylde bogstaver på Java-sider, hvor tastetryk udebliver :p
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester