|
|
|
|
Google Site
|
|||||||
| Форумы | Регистрация | Блог | Человек Страницы | Правила форума | Ссылки | Альбомы | ЧАВО | Пользователи | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
![]() |
|
|
Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|||
|
Как автоматизировать FTP в Perl
Моя ситуация я не могу использовать NET:: FTP. Поэтому мне нужно каким-то образом автоматизировать FTP. Я знаю, как это сделать в KSH:
#! / USR / BIN / KSH FTP-I-V-Н $ host_name <<_FTP>> $ log_file 2> И 1 Пользователь $ user_name LCD $ local_dir CD $ remote_dir положить $ имя_файла пока _FTP Но как я могу это сделать в Perl? Примечание: Не требуется пароль для FTP. А если я хочу использовать этот сценарий в KSH Perl, С использованием системы () или backticks, я получил запрос на пароль. Любые идеи? Спасибо. |
| Рекламные ссылки | ||
|
|
|
|||
|
думаю, что это может помочь
Использование Perl ожидать Автоматизируйте SFTP доступ | Parth Патил's Blog |
|
|||
|
Существует не то, или KSH Perl , что позволило мне иначе относиться к пустую строку, как в поле пароля?
|
|
||||
|
Ohh, я думаю, теперь я знаю, что вы пытаетесь сделать. Там в один файл, который вы можете использовать ". Netrc", который позволит вам войти на сайт через FTP без указания имени пользователя и пароля. Однако, вы должны указать, что после команды. Вот один пример. Netrc файла:
Код:
machine remote.host.edu login foobar password SuperSecret73 Вам нужно убедиться, что. Netrc имеет разрешение 600 (использование Chmod). |
|
|||
|
Вы можете написать FTP код с файла, а затем использовать систему команд для выполнения этого файла. Вот скрипт, который я использую:
Код:
#!/usr/bin/perl
# #########################################################################
# # This script was written to search directories read ##
# # from the file pwdirs and search them for monthly reports to be sent ##
# # to . You must provide the beginning day, ending day and ##
# # month on the command line. The beginning day, ending day and month ##
# # must be two digits ex: 01,02....31. This script will pull files for ##
# # days and month specified. The command to run this is: ##
# # perl pwcopy.pl BEGINNING_DAY ENDING_DAY MONTH . ex: ##
# # perl pwcopy.pl 01 03 09 ##
# # The above command would copy reports from the 1st through 3rd days ##
# # for the month of September. ##
# #########################################################################
# # These are passed from the command line
$begin=$ARGV[0]; #Get the begin day of month
$end=$ARGV[1]; #Get the end day of the month
$month=$ARGV[2]; #Get the month of the reports to copy
# Get the current date
($csec,$cmin,$chour,$cmday,$cmon,$cyear,$cwday,$cyday,$cisdst) = localtime(time);
$cyear=$cyear+1900; # get the correct year
$cmon=$cmon+1; # Get the correct month
if($cmon<10) {$cmon="0$cmon";}
if($cmday<10) {$cmday="0$cmday";}
if($chour<10) {$chour="0$chour";}
if($cmin<10) {$cmin="0$cmin";}
if($csec<10) {$csec="0$csec";}
# # Open file to write ftp script to
open(ftpsc, '>/usr/local/bin/pwpmftp') or die "Can't open ftp script file";
print ftpsc "# This script is created by the script pwcopy.pl\n";
print ftpsc "ftp -in 00.00.00.00 <<EOF\n";
print ftpsc "user userid password\n";
print ftpsc "type ascii\n";
# # Open the file containing the directories to be searched
open(DIRFIL, 'pwdirs') or die "Can't open directory file pwdirs\n";
while (<DIRFIL>) {
$dir = $_ ;
chomp($dir);
# # Open the directory to be read for files
opendir(CURR, $dir) or die "Can't open directory: $dir $!\n";
while (defined($file = readdir(CURR))) {
if ($file =~ m/ARM|AMI|AMR[^AMRA|^AMRB|^AMRD]/) {
$mtime = (stat("$dir/$file"))[9]; # Get the last accessed date
# # Create a readable date to compare to the current date from above
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($mtime);
$mon=$mon+1;
$year=$year+1900;
if($mon<10) {$mon="0$mon";}
if($mday<10) {$mday="0$mday";}
if(($mday ge $begin && $mday le $end) && $mon eq $month && $year eq $cyear) {
$count=$count+1;
$fdate_time="$cmon$cmday$cyear$chour$cmin$csec$count";
$new_file=substr($file,4,4);
$odir=substr($dir,10,3);
print ftpsc "put $dir/$file /$odir/$odir$new_file$fdate_time.txt\n";
}
}
}
}
print ftpsc "quit\n";
print ftpsc "EOF\n";
close ftpsc;
system("./pwpmftp");
Я уверен, что кто-то более опытных, чем я мог бы написать более эффективной Perl сценарий, но она работает для меня. Удачи. |
|
|||
|
Спасибо всем. Но то, является "открытым" и командой. Netrc файл еще не будет работать для меня. Я пробовал и то и другое. В обоих случаях, программа оперативного меня пароль. Я "" (двойные далее "), в открытой и. Netrc на пароль.
Так что я, возможно, придется использовать NET:: FTP потом. |
| Рекламные ссылки |
|
|
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Автоматизируйте FTP | borncrazy | Shell программирование и сценарии | 11 | 02-21-2008 12:10 AM |
| Здесь документа автоматизировать Perl-скрипт, вызов скрипта | hogger84 | Shell программирование и сценарии | 3 | 10-22-2007 11:15 AM |
| Автоматизация изменений конфигурации | nhatch | Shell программирование и сценарии | 3 | 02-06-2007 03:31 PM |
| Автоматизируйте FTP | CamTu | UNIX перспективных И опытных пользователей | 4 | 02-25-2005 10:08 AM |
| автоматизации работы FTP | flowrats | UNIX для чайников Вопросы И Ответы | 11 | 07-24-2002 09:47 AM |