FTP-scripting met DriveHQ CommandFTP

FTP/SFTP-scripting met DriveHQ CommandFTP


1. Invoering
2. DriveHQ CommandFTP-syntaxis en -parameters
3. FTP-scriptbestanden maken
3.1 Een voorbeeld van een FTP-scriptbestand
3.2 FTP-scriptbestand met parameters
4. Automatiseer bestandsoverdracht met de Taakplanner van Windows
5. Automatische mapsynchronisatie met DriveHQ CommandFTP
6. FTP-opdrachtreferenties
6.1 Standaard FTP-opdrachten
6.2 DriveHQ Geavanceerde FTP-opdrachten

1. Invoering

DriveHQ CommandFTP is een krachtige FTP- en SFTP-client voor de commandoregel, ontworpen als vervanging voor de FTP-client van Windows. Het ondersteunt FTP-scripting en is compatibel met alle standaard FTP/SFTP-servers.

FTP/SFTP is enorm populair voor het overdragen van grote bestanden/mappen via internet. De FTP-client via de commandoregel wordt veel gebruikt voor geautomatiseerde bestandsoverdracht met FTP-scripts. Veel mensen gebruiken de ingebouwde FTP-client van Windows. Deze ingebouwde FTP-client heeft echter een aantal belangrijke nadelen:

  • 1. Het ondersteunt alleen FTP in actieve modus, wat vaak wordt geblokkeerd door routers, firewalls of beveiligingssoftware.
  • 2. Het ondersteunt alleen standaard FTP zonder gegevensversleuteling.
  • 3. Het biedt geen ondersteuning voor automatisch hervatten/opnieuw proberen.

DriveHQ CommandFTP is ontworpen als vervanging voor de standaard FTP-client van Windows. Het biedt de volgende voordelen:

  • 1. Het ondersteunt zowel actieve als passieve FTP-modus.
  • 2. Het ondersteunt FTP via SSL (FTPS & FTPES) en SFTP.
  • 3. Het ondersteunt automatisch hervatten/opnieuw proberen.
  • 4. Het ondersteunt datacompressie en -versleuteling.
  • 5. Het ondersteunt het downloaden/uploaden van mappen.
  • 6. Het ondersteunt het spiegelen/synchroniseren van mappen.
  • 7. Het biedt ondersteuning voor het vastleggen van gebeurtenissen voor controle en probleemoplossing.
  • 8. Het kan na een operatie e-mailrapporten versturen.
  • 9. Het biedt ondersteuning voor krachtigere FTP-scripts.

In veel gevallen kan DriveHQ CommandFTP de Windows FTP-client direct vervangen. Ze hebben een vergelijkbare syntaxis en commandoregelparameters. DriveHQ CommandFTP biedt echter veel meer functies. Het kan complexe bestandsoverdrachtstaken met slechts één commando afhandelen. Dankzij de SFTP-ondersteuning kunt u een FTP-scriptbestand schrijven en dit uitvoeren met een SFTP-server.

2. DriveHQ CommandFTP-syntaxis en -parameters

Syntaxis


cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]

Parameters

Parameter Beschrijving
FTP_SERVER De naam of het IP-adres van de FTP/SFTP-server, zoals ftp.drivehq.com, ftp://ftp.drivehq.com of ftps://ftp.drivehq.com. Dit is verplicht, tenzij de parameters -s:FTP_SCRIPT_FILE bevatten
-u:USERNAME Hiermee wordt de gebruikersnaam van het FTP/SFTP-account opgegeven.
-p:PASSWORD Hiermee wordt het FTP/SFTP-accountwachtwoord opgegeven.
-k:"PRIVATE_KEY_FILE" Optioneel. Specificeert het pad naar het SFTP-privésleutelbestand.
-s:"FTP_SCRIPT_FILE" Optioneel. Specificeert het pad naar het FTP-scriptbestand. Als deze parameter wordt opgegeven, worden andere parameters genegeerd, behalve de optie "-d:LOG_FILE".

Opdrachtopties

/xo[:time] Oude bestanden uitsluiten
/xn[:time] Nieuwere bestanden uitsluiten
/xf:filenames Bestanden uitsluiten, bestanden worden gescheiden door komma's
/xd:foldernames Mappen uitsluiten; mappen worden gescheiden door een komma

Logboekopties

-d:"LogFileName" Hiermee wordt het pad naar het logbestand opgegeven. Als u "-d" gebruikt zonder LogFileName, wordt het logbestand in het consolevenster weergegeven.

3. FTP-scriptbestanden maken

FTP-scripts zijn erg populair onder IT-beheerders en systeemintegrators. Ze worden veel gebruikt voor geautomatiseerde back-ups en bestandsoverdracht. Met een FTP-script kunt u een tekstbestand maken met een lijst van FTP-opdrachten en invoerwaarden. Deze opdrachten kunt u vervolgens achter elkaar uitvoeren. Omdat een scriptbestand veel FTP-opdrachten kan bevatten, kan het zeer complexe bestandsoverdrachtstaken uitvoeren.

FTP-scripting met de standaard Windows FTP-client is zeer beperkt: het ondersteunt alleen plain FTP, wat niet veilig is, en alleen Active Model FTP, dat vaak wordt geblokkeerd door routers/firewalls. DriveHQ CommandFTP ondersteunt de meeste functies van de Windows FTP-client en daarnaast nog veel functies die niet beschikbaar zijn in de Windows FTP-client. DriveHQ CommandFTP is compatibel met alle standaard FTP-servers.

Om een FTP-scriptbestand te schrijven, kunt u eerst de FTP-opdrachten in de interactieve modus uitvoeren. Open een opdrachtvenster en typ de volgende opdrachten in, zoals weergegeven in de onderstaande schermafbeelding:

Deze commando's omvatten doorgaans: verbinding maken met een FTP-server, inloggen op de server, bestanden/mappen in een directory weergeven, de huidige directory wijzigen, bestanden uploaden/downloaden/verwijderen, enzovoort. Als u FTP slechts af en toe gebruikt, werkt de bovenstaande methode prima. Als u echter herhaaldelijk bestanden moet overdragen/back-uppen/verwijderen, bijvoorbeeld als onderdeel van een geplande back-uptaak of EDI (Electronic Data Interchange) met een ander bedrijf, kunt u eenvoudig een scriptbestand schrijven dat steeds opnieuw kan worden gebruikt. In combinatie met de Taakplanner van het besturingssysteem kunt u dit bedrijfsproces automatiseren.

Een voorbeeld van een FTP-scriptbestand
Een FTP-scriptbestand bevat dezelfde commando's/invoer als in een interactieve FTP-sessie. In principe hoeft u alleen maar een tekstbestand aan te maken in een teksteditor (bijvoorbeeld Kladblok) en de commando's en invoer in te typen zoals u dat in de interactieve modus zou doen. DriveHQ's CommandFTP heeft een zeer vergelijkbare interface als de Windows FTP-client. De volgende commando's kunnen zowel in de Windows FTP-client als in DriveHQ's CommandFTP-client worden uitgevoerd. Om CommandFTP te gebruiken, typt u cmdftp in plaats van ftp.:

C:\>ftp
ftp> open ftp.drivehq.com
Connected to ftp.drivehq.com.
220 Welcome to the most popular FTP hosting service! Save on hardware, software,
 hosting and admin. Share files/folders with read-write permission. Visit http:/
/www.drivehq.com/ftp/;
User (ftp.drivehq.com:(none)): dhqdemo
331 User name ok, need password.
Password: xxxxxxxxx
230 User dhqdemo logged on.
ftp> cd test
250 CWD command successful. "/test" is current directory.
ftp> delete orders.xml.bak
550 File not found.
ftp> rename orders.xml orders.xml.bak
350 File exists, ready for destination name.
250 File "/test/orders.xml" renamed successfully.
ftp> put c:\test\orders.xml
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete
ftp: 41 bytes sent in 0.06Seconds 0.65Kbytes/sec.
ftp> quit
221 Bye

C:\>


Zoals je kunt zien, zullen deze commando's:
- Log in op een FTP-server: ftp.drivehq.com;
- Voer de gebruikersnaam en het wachtwoord in;
- Ga naar de lokale map "c:\test";
- Ga naar de FTP-directory "/test";
- Verwijder het bestand "Orders.xml.bak" (indien aanwezig) op de FTP-server;
- Hernoem het bestand "Orders.xml" (indien aanwezig) naar "Orders.xml.bak" op de FTP-server;
- Upload het lokale bestand "Orders.xml" naar de FTP-server;
- Afsluiten

Je kunt ze in een opdrachtprompt uitvoeren om de code te debuggen voordat je ze opslaat in een scriptbestand. De inhoud van het script zal er als volgt uitzien:

open ftp.drivehq.com
USERNAME
xxxxxxxxx
cd test
delete orders.xml.bak
rename orders.xml orders.xml.bak
put c:\test\orders.xml
quit

Het bovenstaande FTP-script kan dagelijks worden uitgevoerd om automatisch nieuwe orderinformatie naar de FTP-server over te zetten. Het uploadt het meest recente "Orders.xml"-bestand naar de FTP-server; voordat het bestand wordt geüpload, wordt het vorige bestand hernoemd (back-up gemaakt).
Om het FTP-script uit te voeren, hoeft u alleen maar de FTP-opdracht met de optie -s uit te voeren. Met de FTP-client van Windows kunt u het volgende gebruiken:
	ftp -s:ftpscript.txt 

Met de DriveHQ CommandFTP-client kunt u gebruikmaken van
	cmdftp -s:ftpscript.txt 
    

FTP-scripts met parameters
Het bovenstaande FTP-script is statisch. Het kan herhaaldelijk worden uitgevoerd, maar is niet erg flexibel. Als u bijvoorbeeld gegevens voor meerdere klanten moet overdragen, wilt u waarschijnlijk verschillende mappen gebruiken. Om hetzelfde FTP-script opnieuw te kunnen gebruiken, moet het extra parameters ondersteunen. Er zijn twee oplossingen:
(1) Gebruik een batchscriptbestand om het FTP-scriptbestand dynamisch te genereren. Windows-batchscripts kunnen opdrachtregelparameters accepteren. Als u de Windows FTP-client gebruikt, is dit de enige oplossing.
(2) DriveHQ CommandFTP ondersteunt extra parameters.
Bij de eerste methode moet u een batchbestand maken, bijvoorbeeld test.bat. Sla het bestand op in de map C:\test. U kunt het batchbestand uitvoeren door het volgende in te typen:

	c:\test\test.bat PARAM1 PARAM2 ...

Het test.bat-bestand zal er als volgt uitzien:

@echo off
echo open ftp.drivehq.com> ftpscript.txt
echo USERNAME>> ftpscript.txt
echo PASSWORD>> ftpscript.txt
echo cd %1>>  ftpscript.txt
echo delete %2.bak>>  ftpscript.txt
echo rename %2 %2.bak>> ftpscript.txt
echo put c:\%1\%2>> ftpscript.txt
echo quit>> ftpscript.txt


Op deze manier kunt u de argumenten van het batchbestand doorgeven aan het FTP-scriptbestand. Hetzelfde batchscript kan voor verschillende bedrijven worden hergebruikt, bijvoorbeeld.:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
Met DriveHQ CommandFTP kunt u een FTP-script uitvoeren met extra argumenten. Zo hoeft u geen batchscriptbestand te maken. U kunt het FTP-script eenvoudig uitvoeren met de volgende opdracht:
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
Het FTP-scriptbestand moet als volgt enigszins worden aangepast:

# %1 is like "test", %2 is like "orders.xml"
# This file is saved as c:\temp\ftpscript2.txt
# to run it, use:
# cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml

open ftp.drivehq.com
USERNAME
PASSWORD
cd /%1
delete /%1/%2.bak
rename /%1/%2 /%1/%2.bak
put c:\%1\%2
quit

In het bovenstaande scriptbestand wordt de mapnaam vervangen door %1 en de bestandsnaam door %2. Om het FTP-script uit te voeren, moet u deze parameters als opdrachtregelargumenten opgeven.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
Wanneer DriveHQ CommandFTP het scriptbestand uitvoert, wordt %1 vervangen door "test" en %2 door "orders.xml".

4. Automatiseer bestandsoverdracht met de Taakplanner van Windows

Of u nu een batchbestand gebruikt of DriveHQ CommandFTP rechtstreeks, u kunt de bestandsoverdracht plannen in de Taakplanner van Windows. U kunt de taak dagelijks, wekelijks of maandelijks laten uitvoeren. In de geavanceerde instellingen kunt u de taak zelfs zo instellen dat deze elke paar uur of minuten wordt uitgevoerd. U kunt ook het tijdstip instellen waarop de taak moet starten. Om de Taakplanner te openen, typt u 'Taakplanner' in het zoekvak (zie de onderstaande schermafbeelding):

Launch Windows Task Scheduler

Klik op Taakplanner; hiermee wordt de Windows Taakplanner geopend.

Click create basic task in Windows Task Scheduler

Om een taak aan te maken, klikt u op "Een basistaak aanmaken".

Create basic scheduled task

Voer de taaknaam en -omschrijving in en klik vervolgens op Volgende.

Select task trigger / schedule

Selecteer uw taakplanning. U kunt kiezen voor dagelijks, wekelijks of maandelijks. Als u de taak elk uur wilt uitvoeren, kunt u dit later in de geavanceerde instellingen doen. Klik op Volgende om de actie in te stellen.

Scheduled Task - Action - select a program

Selecteer op de actiepagina 'Een programma starten' en klik vervolgens op Volgende.

Scheduled Task - Action - Select DriveHQ CommandFTP

Selecteer DriveHQ CommandFTP (cmdftp.exe) als programma. Voeg de opdrachtregelparameters toe in het tekstvak 'Argumenten toevoegen'. 'Starten in' is optioneel. U kunt dit instellen op dezelfde map als het EXE-bestand. Klik op Volgende om de taak te voltooien.

Om de geavanceerde instellingen te openen, klikt u op 'Taakplanningsbibliotheek'. U ziet dan een lijst met geplande taken. Dubbelklik op de taak 'Bestellingen uploaden' om de taakinstellingen te bewerken.

Scheduled Task - Advanced Settings - Edit Task Properties

Let op: standaard wordt de taak alleen uitgevoerd wanneer de gebruiker is aangemeld. U kunt deze instelling hier wijzigen, zodat de taak ook wordt uitgevoerd wanneer de gebruiker niet is aangemeld.

5. Automatische mapsynchronisatie met DriveHQ CommandFTP

DriveHQ CommandFTP ondersteunt mapspiegeling. Het synchroniseren van een lokale map met een FTP-map is uiterst eenvoudig. Gebruik hiervoor de volgende opdracht:

	cmdftp FTP_SERVER -u:gebruikersnaam -p:wachtwoord -m:"LOKALE_MAP|FTP_MAP"

Met behulp van de Taakplanner van Windows kunt u deze opdracht uitvoeren om de twee mappen periodiek te synchroniseren.

6. FTP-opdrachtreferenties

Nadat u bent ingelogd op een FTP-server, kunt u FTP-opdrachten naar de FTP-server verzenden. De Windows FTP-client ondersteunt de volgende opdrachten. Let op: deze commando's zijn niet hetzelfde als FTP-opdrachten gedefinieerd in het FTP-protocol. Elk FTP-protocolcommando behandelt doorgaans slechts één eenvoudig probleem. Een FTP-commando in een Windows FTP-client kan echter meerdere FTP-protocolcommando's gebruiken.

DriveHQ CommandFTP is vergelijkbaar met de FTP-client van Windows. Het ondersteunt vergelijkbare commando's en syntaxis. Daarnaast ondersteunt het ook een aantal DriveHQ-specifieke geavanceerde FTP-commando's, zoals commando's om mappen te kopiëren, verplaatsen, uploaden, downloaden of verwijderen.

6.1 Windows FTP-clientopdrachten

De Windows FTP-client (ftp.exe) ondersteunt de volgende FTP-opdrachten:
FTP-opdrachten Beschrijving
! Met dit commando schakel je tussen het lokale besturingssysteem en de FTP-server. Wanneer je inlogt op een FTP-server, wordt standaard de FTP-server gebruikt. Als je een commando lokaal wilt uitvoeren, kun je meestal het volgende gebruiken !CMD_NAME, e.g. !dir, !mkdirenz.
? Toont de helpinformatie.
append Een bestand aanvullen.
ascii Stel de ASCII-overdrachtsmodus in.
bell Schakel "Pieptoon geven wanneer de opdracht is voltooid" in.
binary Stel de binaire overdrachtsmodus in.
bye Verbreek de FTP-sessie en sluit het programma af.
cd Map wijzigen.
close Beëindig de FTP-sessie.
delete Verwijdert een bestand.
debug Debugmodus in- of uitschakelen.
dir Geeft een lijst van alle bestanden en submappen in een directory.
disconnect Verbreek de FTP-sessie.
get Download het bestand van de externe FTP-server.
glob Schakel globbing in of uit. Wanneer uitgeschakeld, worden jokertekens in bestandsnamen (in de neerzetten En krijgen commando's worden letterlijk genomen.
hash Schakel het afdrukken van "#" in of uit voor elke overgedragen buffer.
help Toon de helpinformatie; gebruik hiervoor meestal help COMMAND_NAME.
lcd Als u dit commando alleen typt, wordt de huidige lokale werkmap weergegeven; anders wordt de lokale werkmap gewijzigd.
literal Stuur een willekeurige opdracht naar de verbonden FTP-server met een verwachte reactie van één regel.
ls Lijst de bestanden in de FTP-map.
mdelete Meerdere bestanden verwijderen van de FTP-server.
mdir Geeft een overzicht van de bestanden/submappen in meerdere FTP-directory's.
mget Download meerdere bestanden van de FTP-server naar uw lokale werkmap.
mkdir Maak een nieuwe map aan.
mls Toon de inhoud van meerdere FTP-directory's.
mput Upload meerdere lokale bestanden naar de FTP-server.
open Verbinden met een FTP-server.
prompt Hiermee kunt u interactieve prompts voor meerdere opdrachten in- of uitschakelen.
put Upload één bestand naar de FTP-server.
pwd De werkmap op de FTP-server afdrukken.
quit Verbreek de verbinding met de FTP-server en sluit het programma af.
quote Hetzelfde als het letterlijke commando (Verzend een willekeurig ftp-commando).
recv Een bestand downloaden/ontvangen van de FTP-server.
remotehelp Vraag hulp aan via een externe server.
rename Een bestand op de FTP-server hernoemen.
rmdir Een map verwijderen van de FTP-server.
send Verzend één bestand.
status Toont de status van de huidige opties.
trace Pakkettracering in- of uitschakelen.
Type Stel het bestandsoverdrachtstype in.
user Verzend nieuwe gebruikersgegevens (gebruikersnaam).
verbose Schakel de uitgebreide weergave in of uit.

6.2 DriveHQ Geavanceerde FTP-opdrachten

DriveHQ CommandFTP ondersteunt een aantal geavanceerdere FTP-commando's:

FTP-opdrachten Beschrijving
download Een map of bestand downloaden.
Syntaxis: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload Upload een map of bestand.
Syntaxis: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror Een lokale map en een FTP-map spiegelen.
Syntaxis: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles Verwijder in de opgegeven map bestanden die ouder zijn dan x dagen.
Syntaxis: deleteoldfiles [FTP-PATH] /xo:[time]