Visit Our UNIX and Linux User Community


FTP search ,grep using perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting FTP search ,grep using perl
# 1  
Old 04-23-2013
Code FTP search ,grep using perl

Need assistance on a Perl script.

I have a list of file names in a file and would like to search/grep the same names in the list of files on the ftp server and output to a file. Any help is appreciable

Below is the script that can give me the list of files,size of file, Modified date on the FTP server

Code:
#!/usr/bin/perl -w
use Net::FTP;

$ftp = Net::FTP->new("hostname");
$ftp->login('user', 'pass');
$ftp->cwd("path");
$ftp->binary;
#$flag=$ftp->mdtm($_);

my @filenames=$ftp->ls();
print " Total files:", $#filenames + 1, "\n";
foreach (@filenames)
{
 print $_, " Size:[", $ftp->size($_), "]", " Mtime ", scalar(localtime($ftp->mdtm($_))), "\n";
}
$ftp->quit();


Last edited by ajayram_arya; 04-23-2013 at 12:49 PM..
# 2  
Old 04-23-2013
grep as in what? regex match? literal filename match? case sensitive or insensitive?
# 3  
Old 04-23-2013
Not case sensitive . Example below

File name on the server ftp 471560-99999-2013.op.gz

search for 471560 and get the result
# 4  
Old 04-23-2013
Okay, so a simple substring match, you can do that with index() in perl. If it returns -1, the string is not found. If it returns anything else, it is found.

Code:
#!/usr/bin/perl -w
use Net::FTP;

my @str;

while($line=<STDIN>)
{
        chomp($line); # Remove newline from end of string
        push(@str, $line); # Add string to end of @str array
}

$ftp = Net::FTP->new("hostname");
$ftp->login('user', 'pass');
$ftp->cwd("path");
$ftp->binary;
#$flag=$ftp->mdtm($_);

my @filenames=$ftp->ls();
print " Total files:", $#filenames + 1, "\n";
foreach (@filenames)
{
        $name=$_;
        print $name, " Size:[", $ftp->size($name), "]", " Mtime ", scalar(localtime($ftp->mdtm($name))), "\n";
        foreach(@str)
        {
                if(index($line,$_) >= 0)
                {
                        print $name, " matches ", $_, "\n";
                        $ftp->get($name);
                        break;
                }
        }
}

$ftp->quit();

run it like
Code:
./myscript.pl < listfile

# 5  
Old 04-23-2013
Code

I get an error below. Can you please help me on this

Code:
Use of uninitialized value in index at ./test.pl line 26, <STDIN> line 2.
Use of uninitialized value in index at ./test.pl line 26, <STDIN> line 2.

# 6  
Old 04-23-2013
Oh, you're using strict, so I have to declare every last variable.

I think. I don't have an easy FTP setup to test this with.

Code:
#!/usr/bin/perl -w
use Net::FTP;

my @str;
my $name;
my $line;

while($line=<STDIN>)
{
        chomp($line); # Remove newline from end of string
        push(@str, $line); # Add string to end of @str array
}

$ftp = Net::FTP->new("hostname");
$ftp->login('user', 'pass');
$ftp->cwd("path");
$ftp->binary;
#$flag=$ftp->mdtm($_);

my @filenames=$ftp->ls();
print " Total files:", $#filenames + 1, "\n";
foreach (@filenames)
{
        $name=$_;
        print $name, " Size:[", $ftp->size($name), "]", " Mtime ", scalar(localtime($ftp->mdtm($name))), "\n";
        foreach(@str)
        {
                if(index($line,$_) >= 0)
                {
                        print $name, " matches ", $_, "\n";
                        $ftp->get($name);
                        break;
                }
        }
}

$ftp->quit();

# 7  
Old 04-23-2013
When i run the script I get the below output


Code:
bash-3.00$ ./test.pl < files.txt
Unquoted string "break" may clash with future reserved word at ./perltest1.pl line 31.
Useless use of a constant in void context at ./perltest1.pl line 31

.

Code:
Use of uninitialized value in index at ./perltest1.pl line 27, <STDIN> line 2.
Use of uninitialized value in index at ./perltest1.pl line 27, <STDIN> line 2.

Code:
bash-3.00$ more files.txt
450070
766133


Previous Thread | Next Thread
Test Your Knowledge in Computers #393
Difficulty: Easy
The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems.
True or False?

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to use a grep search to search for a specific string within multiple directories?

Lets say I have a massive directory which is filled with other directories all filled with different c++ scripts and I want a listing of all the scripts that contain the string: "this string". Is there a way to use a grep search for that? I tried: grep -lr "this string" * but I do not... (3 Replies)
Discussion started by: Circuits
3 Replies

2. UNIX for Beginners Questions & Answers

Grep/awk using a begin search pattern and end search pattern

I have this fileA TEST FILE ABC this file contains ABC; TEST FILE DGHT this file contains DGHT; TEST FILE 123 this file contains ABC, this file contains DEF, this file contains XYZ, this file contains KLM ; I want to have a fileZ that has only (begin search pattern for will be... (2 Replies)
Discussion started by: vbabz
2 Replies

3. Shell Programming and Scripting

Perl - start search by using search button or by pressing the enter key

#Build label and text box $main->Label( -text => "Input string below:" )->pack(); $main->Entry( -textvariable => \$text456 )->pack(); $main->Button( -text => "Search", -command => sub { errchk ($text456) ... (4 Replies)
Discussion started by: popeye
4 Replies

4. Shell Programming and Scripting

Perl - use search keywords from array and search a file and print 3rd field when matched

Hi , I have been trying to write a perl script to do this job. But i am not able to achieve the desired result. Below is my code. my $current_value=12345; my @users=("bob","ben","tom","harry"); open DBLIST,"<","/var/tmp/DBinfo"; my @input = <DBLIST>; foreach (@users) { my... (11 Replies)
Discussion started by: chidori
11 Replies

5. HP-UX

[Solved] Unable to rename file in ftp server .Net:FTP perl

Hello All, I am trying to connect to ftp server and get the files. Also i need to rename the file in other ftp dir. rename method is not allowing me to rename the file in other dir. When i tried copy command by using net::FTP:FILE then perl says it is not installed. Can some body help me to... (2 Replies)
Discussion started by: krsnadasa
2 Replies

6. UNIX for Dummies Questions & Answers

recursive search and ftp

Could someone help me in recursive search and ftp'ing the files to remote server? The host machine will have /dir1/dira/list_of_files1 /dir1/dirb/list_of_files2 /dir1/dirc/list_of_files3 . . . so., I need to search from dir1 recursively (only one level down) and find all the files that... (1 Reply)
Discussion started by: brahmi
1 Replies

7. Shell Programming and Scripting

perl search and replace - search in first line and replance in 2nd line

Dear All, i want to search particular string and want to replance next line value. following is the test file. search string is tmp,??? ,10:1 "???" may contain any 3 character it should remain the same and next line replace with ,10:50 tmp,123 --- if match tmp,??? then... (3 Replies)
Discussion started by: arvindng
3 Replies

8. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies

9. Shell Programming and Scripting

using finddepth in ftp to search for directories in perl

Hi all, I have script which downloads the build and copies onto the local machine I am able to download files in a directory, but unable to get the files in subdierctories. I am using finddepth to search for sub directories but I am unable to do so. Here is my code: ... (0 Replies)
Discussion started by: gurukottur
0 Replies

Featured Tech Videos