Naši partneři
BMI SYSTEM CZECH
Informační systémy budoucnosti
ProfiSoft Technologies s.r.o.
IT Outsourcing
evehicle.cz
...snadný pohyb městem

Vlastní pomocník pro FTP přenosy a kódování textu




Tak jsme zahájili hosting projektů na platformě MS Windows 2008 Server. Součástí hostovaných webů je nutnost generovat z databáze soubory a nabízet je na FTP ke stažení, resp. zpracovávat soubory z FTP stažené. Tyto akce samozřejmě musí fungovat automatizovaně, a proto jsme dlouze hledali nějaký free prostředek, který by FTP přenosy uměl přes příkazovou řádku. Nakonec jsme přišli na to, že nemusíme chodit daleko - Windows Servery mají vlastního comannd line utilitu. Ale radost netrvala příliš dlouho, protože jak se ukázalo, Windows FTP klient (jmenuje se prostince "ftp") neumí jiný, než aktivní mód FTP přenosů, a to je prakticky problém kvůli firewallům.

Na vysvětlenou: Aktivní FTP mód je takový, kdy klient pouze posílá požadavky, a FTP server je vykonává, takže zjednodušeně download souboru z FTP serveru funguje tak, že klient požádá o soubor, a ten je mu FTP serverem "doručen". Potíž aktivního módu spočívá v tom, že komunikace pomocí příkazů prochází přes známý TCP port 21, ale pro samotný přenos souboru si FTP server vyhradí další (prakticky náhodný) TCP port. Tento druhý port, ale není otevřen na firewallu, takže k samotnému přenosu nedojde. A tento stav řeší pasivní mód, kdy klient si sám v rámci portu 21 soubor stáhne, resp. nahraje na FTP server.

 
Udělej si sám

Protože opravdu šikovného free FTP klienta s pěknou command line se nám nepodařilo najít, museli jsme si vymyslet svého. Pro ty, kteří mají podobný problém, přikládáme na konci článku ke stažení soubor Prenos.zip, který obsahuje jak komentovaný zdrojový kód, tak i zkompilovaný program.

 

Jak to funguje? Je to jednoduché. Program je klasická konzolová aplikace, takže se dá volat z příkazové řádky. V rámci volání programu je nutno vložit dva parametry volání - jméno "site", se kterou má program komunikovat, a dále potom akci, kterou má vykonat. Volání tedy bude vypadat vzorově asi takto:

 

NetSet.DataExchange.exe /alfa upload

 

kde "alfa" je název site a "upload" je akce, kterou má program vykonat. Na základě vložených parametrů volání program načte konfigurační hodnoty ze souboru Konfig.xml (jeho vzorek je součástí "zipu"), a zjistí, odkud kam má soubory nahrávat.

 

Seznam akcí, kterých je přenosový program schopen:

download - stažení souboru z FTP do stanoveného adresáře

upload - nahrání souborů na FTP server

reencode - možnost "přeuložit" soubor z jedné zankové sady do jiné - toto byl původní účel využití programu. Jak jsme psali v dřívějším článku o bcp utility, je problém dosáhnout správné znakové sady při exportu výsledku dotazu do file systému. Možnost "reencode" programu NetSet.DataExchange.exe, tento problém řeší.

 
Program ke stažení

Program i se zdrojovým kódem najdete zde:

Prenos.zip.

Program se dá rozšířit - obsahuje nachystanou třídu pro komunikaci přes HTTP.

 
Sdílejte tuto položku se svými přáteli
 
Související články
Udělat načtení a následné zpracování XML ze souboru na SQL Server jsme popisovali minule, dnes vyřešíme opačný problém.
17.9.2009 8:59:21
TOPlist