Я новичок в Perl. У меня есть входной файл с разделителями труб, которые имеют имя_сервера и имена файлов в качестве полей. Имена файлов имеют подстановочный знак (*) во входном файле фида.
К фактическим именам файлов будут добавлены временные метки.
Ex: Actual files in remote servers
server_1/abc_20110801.txt
server_1/abc_20110802.txt
server_1/abc_20110803.txt
server_2/xyz_20110801.dat
server_2/xyz_20110802.dat
Ex: Input feed file
server_1|abc_*.txt
server_2|xyz_*.dat
Я пытаюсь подключиться к удаленным серверам по ssh, прочитать файл и записать временные метки последнего файла (в данном случае server_1 / abc_20110803.txt и server_2 / xyz_20110802.dat)
Ключи SSH ко всем удаленным серверам уже настроены, поэтому нам не нужно передавать ID пользователя и пароли.
Я могу сделать это, если файлы существуют на том же сервере, используя следующее:
my @list_files = map { chomp; $_ } (`ls -t $wild_f_nme`);
my $f_nme=$list_files[0];
my ($accesstime, $modtime, $createtime, $fsize) = (stat($f_nme))[8,9,10,7];
Как бы я сделал это, чтобы проверить метки времени файлов на удаленных серверах. Мне нужно установить соединение SSH для каждого из серверов.
К вашему сведению - я не могу (не могу) установить какие-либо модули (например, Net :: OpenSSH).
Можем ли мы сделать это с помощью чего-то вроде?
my @list_files = map { chomp; $_ } (`qx/ssh $serv_nme ls -t $d_loc/$wild_f_nme`);