|
Титла: Perl ftp tutorial, static blog site Публикувано от: PhrozenCrew в May 02, 2006, 21:09 Perl FTP tutorial, static blog site
Свързване с FTP сървар през Perl, създаване на статичен блог сайт Ето и идеята на програмирането за FTP под Perl. На първо място е необходимо да се регистрирате в някой free сървар за да си получите безплатното интернет пространство. Такива сървари с лопата да ги ринеш в БГ – hit.bg, bol.bg(казват ,че е видим от цял свят), centrum-group.com и още знайни и незнайни. След като вече имате акаунт към някой от фрее сърварите е добре да знаете как да се свържете с него. Ако сте си направили акаунт например към free.techno-link.com и името на акаунта ви е pen4o, а паролата pencho17, тогава значи за да се свържете ще трябва да стартирате някой FTP клиент и данните за връзка ще са: ftp pen4o.centrum-group.com user: pen4o pass: pencho17 Направете си директория tutorials на този адрес и сложете някакви файлове в нея. Например: Perl_FTP_Tutorial.pdf и my_CV.doc Пиша тези неща за да ми е по лесно по-късно в тутора. Приемам , че вече сте си изтеглили Perl. Аз ползвам Perl 5.6. В тази дистрибуция е включен необходимия ни за работа модул NET::FTP. Да преминем директно към същността. Ще напиша скрипта и ще го коментирам между редовете. Така мисля, че ще ви е по-ясно. Скрипта по долу можете да го напишете в най-обикновен текстов редактор, например Notepad (има го във всички Windows или cat – всички Linux, Unix), и го съхранете като PerlFTP.pl #!/usr/bin/perl use Net::FTP; # да заредим модула, който ни трябва my $host="pen4o.centrum-group.com"; #FTP сървара ви my $directory="tutorials"; # някоя от директориите # нека създадем една ftp връзка $ftp=Net::FTP->new($host,Timeout=>240) or $newerr=1; # нека направим семпла проверка за грешки и да изкараме # съобщение, ако има такива # с push добавяме грешката към масив @ERRORS push @ERRORS, "Can't ftp to $host: $!\n" if $newerr; # стартиране на подпрограмата за грешки, ако има такива myerr() if $newerr; # ако всичко е нормално print "Connected\n"; # сега нека да се логнем в сървара $ftp->login("pen4o","pen4o17") # логваме се с нашите данни or $newerr=1; # проверка дали сме логнати # да изпише съобщение когато се свържем print "Getting file list"; # отново да проверим за грешка # и да излезем от сървара ако има такава push @ERRORS, "Can't login to $host: $!\n" if $newerr; $ftp->quit if $newerr; myerr() if $newerr; # ако всичко е нормално print "Logged in\n"; $ftp->cwd($directory) # нека да идем директно в директорията, # която искахме по-горе – tutorials or $newerr=1; # отново да проверим за грешка # нека скрипта да ни изпише нещо ако # намери грешка в името на директорията или друга push @ERRORS, "Can't cd $!\n" if $newerr; myerr() if $newerr; # разкачи връзката ако има грешка $ftp->quit if $newerr; # да зададем команда на FTP сървара # в случая аз си избирам ‘dir’, но може да е всяка # друга команда която поддържа този FTP сървар @files=$ftp->dir # нова проверка за грешки or $newerr=1; # нека изпечата съобщение за грешката # с push добавяме грешката към масив @ERRORS push @ERRORS, "Can't get file list $!\n" if $newerr; myerr() if $newerr; # ако всичко е ок нека видим файловете в директорията print "Got file list\n"; foreach(@files) # правим листата с файловете на масив @files { print "$_\n"; # принтваме на екрана файл по файл # със специалната променлива на Perl, # която обслужва елементи на масиви } # след като сме изпечатали всичко, което ни е необходимо # излизаме нормално от сървара $ftp->quit; # нека да създадем подпрограмата за грешки, # за която споменах по-горе sub myerr { print "Error: \n"; print @ERRORS; exit 0; } Уххх, че много коментари! Да вземем малко да ги делнем а ?? И да видим как би изглеждал скрипта: #!/usr/bin/perl use Net::FTP; my $host="pen4o.centrum-group.com"; my $directory="tutorials"; $ftp=Net::FTP->new($host,Timeout=>240) or $newerr=1; push @ERRORS, "Can't ftp to $host: $!\n" if $newerr; myerr() if $newerr; print "Connected\n"; $ftp->login("pen4o","pen4o17") or $newerr=1; print "Getting file list"; push @ERRORS, "Can't login to $host: $!\n" if $newerr; $ftp->quit if $newerr; myerr() if $newerr; print "Logged in\n"; $ftp->cwd($directory) or $newerr=1; push @ERRORS, "Can't cd $!\n" if $newerr; myerr() if $newerr; $ftp->quit if $newerr; @files=$ftp->dir or $newerr=1; push @ERRORS, "Can't get file list $!\n" if $newerr; myerr() if $newerr; print "Got file list\n"; foreach(@files) { print "$_\n"; } $ftp->quit; sub myerr { print "Error: \n"; print @ERRORS; exit 0; } Мдам, на 28 реда събрахме програмка, която прави всички проверки за грешки и прави някакви мизерии в FTP сървар Нека ви дам една идея. Можете да накарате този скрипт да прави backup на важните ви файлове които сте поставили в някоя директория или по-точно да съхраните данните(файлове, които е добре да бъдат защитени по някакъв начин – например като архиви или PDF-и с парола) в internet пространството. Нека погледнем реда : @files=$ftp->dir or $newerr=1; Спокойно можете да използвате не ‘dir’, а някоя друга команда (put, get ...). Да видим как се прави това. Първо е добре да познавате FTP командите които ви позволява вашия сървар. Всички FTP сървари позволяват командата put. Това е команда с която казвате на сървара да качи някой файл от хард диска ви на FTP директорията ви. Аз заменям: @files=$ftp->dir or $newerr=1; със: $blog = 'C:\blog\index.html'; # ако сте под Windows $ftp->put($blog) or $newerr=1; @files=$ftp->dir or $newerr=1; Така качихме файл на FTP сървара ни. Ако искате да качите всички файлове от директорията: C:\blog Можете да го направите като замените горните редове така: for (glob('C:\blog\*.*' $ftp->put($_); } @files=$ftp->dir or $newerr=1; Използвах папката блог, защото ми дойде на ум, че така можете да си направите собствен статичен блог сайт който да оновявате по много лесен начин Тъй като сайто може да промени символите от кода прилагам тутора като PDF тук: http://nediko.fortunecity.com/perl/Perl_Net_FTP_tutorial_ned.zip И целия код с блогерската програмка тук: http://nediko.centrum-group.com/Program....erl.zip Не забравяйте да експериментирате. Например добре би било да изтривате качените файлове за да не ги чакатe да се качат отново и да не ви объркват. Файловете с Perl се изтриват с командата unlink. Пример: unlink "index.html"; Можете да замените еденичните кавички с двойни, но тогава внимавайте с шпациите в файловете. Ще трябва да използвате двойно наклонени черти. Пример: for (glob("C:\\blog\\*.*")) { # ако сте под Windows $ftp->put($_); } @files=$ftp->dir or $newerr=1; Айде стига толква. Perl е толкова лесен и необятен, че човек като почне да пише за него и няма спирачки. Дано ви хареса тутора. В следващия тутор може да закачим и малко сериозното програмиране с Perl, макар, че с тоя език няма сериозност, всичко става като на майтап. Все пак не се заблуждавайте, всички C unix/linux гурота ползват доволно Perl като алтернативен език. ПС: Не забравяйте да смените сървара с вашия и да си попълните всички ваши данни. Скриптовете са тествани и работят с: perl, v5.6.1 built for MSWin32-x86-multi-thread Видях, че има проблеми с копирането на кавичките в PDF-a, заменете ги ръчно с кавички под английска клавиатура. |