Windows - FTP műveletek automatizálása

forráskód letöltése
Gyakori FTP műveleteket könnyen automatizálhatunk a Windows beépített eszközei segítségével. Cikkünkben egy példán keresztül bemutatjuk, hogy lehet felvenni a kapcsolatot a kiszolgálóval, bejelentkezni felhasználói névvel és jelszóval, feltölteni egy fájlt, végül bontani a kapcsolatot és az egész folyamat végrehajtása során keletkező kimenetet egy naplófájlba irányítani. Egy parancsikonnal vagy a feladatütemező segítségével mindez minimális beavatkozással végrehajtható.
Cikkünkhöz mellékeltük az alábbi állományokat:
"Start.bat" - Meghívja és futtatja a "Script.bat"-ban szereplő FTP parancsokat. Felhasználása előtt a példaként megadott "Zeusz" gépnevet módosítani kell egy valós névre.
"Script.bat" - Itt tárolódnak a végrehajtandó parancsok.
"Proba.txt" - Egy mintaállomány. Ezt töltjük fel a kiszolgálóra.
A grafikus felület FTP kliense az Internet Explorer. Sajnos annyira korlátozottak a képességei ezen a téren, hogy feladatunk végrehajtásához nem felel meg. Következő FTP kliens a TFTP (Trivial File Transfer Protocol), mely parancssorból érhető el, ezáltal batch fájlokból, szkriptekből, programokból is meghívható - célunk megvalósításához még ez sem rendelkezik elegendő tudással. Marad a Unix rendszerekben is ismert parancssori FTP utasítás. Jelentős tudása mellett rendelkezik azzal az előnnyel is, hogy nagyon hasonló a különböző operációs rendszerekben lévő megvalósítása. Gyakorlatilag egy-két kapcsoló kivételével azonos a használata Windows és Linux alatt.
Kétféle üzemmódban tud működni: interaktívban, ekkor a saját parancsértelmezője által kezelt utasításokat "érti" meg, illetve nem interaktívban, amikor kapcsolókkal és argumentumokkal használhatjuk. A két üzemmódot vegyítjük az alábbiakban. Indítsunk el egy parancssori ablakot és írjuk be: FTP. Most léptünk interaktív módba, a HELP paranccsal tudjuk kilistáztatni a használható utasításokat.
Térjünk át a bevezetőben meghatározott feladat végrehajtására, egyszerűbb lesz, mint első ránézésre látszik.
Hozzunk létre egy új batch fájlt START.BAT néven és helyezzük el benne a következő sort:
ftp -s:script.ftp -n zeusz >> ftp.log
A -s: kapcsoló után egy fájl nevét kell megadni, ahol az interaktív módban használt utasításokat helyezzük el. Így egyetlen sorral elérhető, hogy ugyanúgy működjön a program, mintha ott ülnénk előtte és sorban gépelnénk be a parancsokat. A megadott fájlból beolvassa és végrehajtja az utasításokat, felhasználói közbeavatkozás nélkül.
A -n kapcsoló után az FTP szerver nevét kell megadni, ez jelen példánkban: zeusz
Az egész parancs kimenetét átirányítjuk az ftp.log fájlba. Ha nem létezik, automatikusan létrejön, ha létezik, hozzáfűződik a végéhez, megőrizve a korábbi adatokat.
Létre kell hozni a SCRIPT.FTP fájlt is. Legyen a következő a tartalma:
user rendszergazda 123456
type binary
put c:\proba\proba.txt
bye
A "User" paranccsal jelentkezhetünk be a kiszolgálóra, paraméterként át kell adni a felhasználói nevet és jelszót. Figyeljünk rá, hogy a jelszó titkosítás nélkül tárolódik, hiszen egy sima szöveges állományról van szó. Illetéktelen kezekbe kerülve könnyen kiolvasható és visszaélésre ad lehetőséget.
Következő parancsunk: "type". Segítségével átváltunk bináris fájlátviteli módba, a feltöltésre kerülő állományok típustól függetlenül bináris fájlként továbbítódnak. Másik lehetőség az ASCII mód használata, de ebben a legtöbb bináris állomány (pl. *.exe) nem továbbítható.
A "Put" paranccsal végezzük el a feltöltést. Kötelező paraméterként meg kell adni a feltöltendő állomány nevét. Második paraméterben megadhatjuk, hogy a kiszolgálóra kerülés után mi legyen a neve. Ha elhagyjuk ugyanolyan néven kerül a szerverre, mint ahogy helyileg tárolódott.
Végül a "Bye" utasítással zárjuk le az ftp kapcsolatot.
Még egy teendőnk van: a feltöltéshez engedélyezni kell a kiszolgálón az alapértelmezésben letiltott írási jogot. Nyissuk meg a Felügyeleti eszközök > Internet szolgáltatáskezelő (Administrative Tools > Internet Services Manager) MMC konzolt. Kattintsunk a farendszerben az adott FTP helyre a jobboldali egérgombbal és lépjünk a "Tulajdonságok" ("Properties") menüre, majd a "Kezdőkönyvtár" ("Home Directory") oldalra. Aktivizáljuk az "FTP-hely könyvtára" ("FTP Site Directory") szekcióban az "Írás" ("Write") jelölőnégyzetet. Ezzel az egész FTP helyre engedélyeztük a feltöltést.
Biztonságosabb, ha csak egy virtuális könyvtáron tesszük meg. Kattintsunk a farendszerben az adott virtuális könyvtárra a jobboldali egérgombbal és ismét lépjünk a "Tulajdonságok" ("Properties") menüre. A "Virtuális könyvtár" ("Virtual Directory") oldalon kapcsoljuk be az "Írás" ("Write") jelölőnégyzetet.
Nem maradt más hátra, mint a próba: futtassuk a START.BAT fájlt és ellenőrizzük az FTP.LOG-ban, hogy minden rendben lezajlott-e. Valami hasonlót kell látnunk:

A kapcsolat létrejött - zeusz.220 zeusz Microsoft FTP Service (Version 5.0).
ftp> user rendszergazda 123456
331 Password required for rendszergazda.
230 User rendszergazda logged in.
ftp> type binary
200 Type set to I.
ftp> put c:\proba\proba.txt
200 PORT command successful.
150 Opening BINARY mode data connection for proba.txt.
226 Transfer complete.
ftp: 5 bájt elküldve 0,00 másodperc alatt: 5000,00 Kbájt/mp.ftp> bye
221  
A START.BAT-nak készíthetünk parancsikont, vagy indíthatjuk a feladatütemezőből is.