Perl ftp and the Three Ps Tutorial
โœ‚๐Ÿƒ๐Ÿพโ€โ™€๏ธ๐Ÿƒ๐Ÿผโ€โ™‚๏ธ
๐Ÿ“–

Perl ftp and the Three Ps Tutorial

Perl ftp and the Three Ps Tutorial

Yesterdayโ€™s Python ftp Primer Tutorial is given a โ€œreturn of the Three Psโ€ feel today. Yes, we code some Perl to do similar ftp listing logic as we did with Python yesterday, so that โ€ฆ



#!/usr/bin/perl

# ftp_url.pl

# Ftp URL listing

# RJM Programming

# November, 2017

# Thanks to https://www.foo.be/docs/tpj/issues/vol1_3/tpj0103-0007.html



use Net::FTP;

#use File::Listing qw(parse_dir);



# Create a new connection to the ftp server

sub connection { # Create a new NET::FTP object

$ftp = Net::FTP->new($CPANhost, Timeout => 60)

or die "Can't contact $CPANhost: $!";

# We shall login to the ftp server as anonymous;

$ftp->login($CPANusername,$CPANpassword)

or die "Can't login ($CPANhost):" .

$ftp->message;

# Change the working directory

$ftp->cwd($CPANpath) or die

"Can't change directory ($CPANhost):".

$ftp->message;

return $ftp;

}





# The path to the CPAN/modules directory on most CPAN hosts

$CPANpath = '/';



$CPANusername = 'mkuulma@ozemail.com.au';

$CPANpassword = '';



# Change this to the name of your nearest CPAN host

$CPANhost = '';

my $size = @ARGV;

if ($size == 2) {

$CPANhost = 'ftp.ozemail.com.au';

$CPANpath = $ARGV[1];

$CPANpassword = $ARGV[0];

} else {

if ($size == 1) {

$CPANhost = 'ftp.ozemail.com.au';

$CPANpassword = $ARGV[0];

} else {

if ($size == 3) {

$CPANhost = $ARGV[0];

$CPANusername = $ARGV[1];

$CPANpassword = $ARGV[2];

} else {

if ($size == 4) {

$CPANhost = $ARGV[0];

$CPANusername = $ARGV[1];

$CPANpassword = $ARGV[2];

$CPANpath = $ARGV[3];

} else {

print "Usage is via ... perl ftp_url.pl [ftphost=ftp.ozemail.com.au] [ftpusername=mkuulma@ozemail.com.au] ftppassword [subpath=/]\n";

}

}

}

}



if ($CPANpassword eq '') {

$CPANpassword = '';

} else {

# Create the initial connection

$ftp = connection();



$ftp->pasv(); # passive mode



# Retrieve a recursive directory listing

my @ls = $ftp->ls('-l');



for my $filex (@ls) {

my $file = $filex;

my (@description, $size);

if (-e $file) {

push @description, 'binary' if (-B _);

push @description, 'a socket' if (-S _);

push @description, 'a text file' if (-T _);

push @description, 'a block special file' if (-b _);

push @description, 'a character special file' if (-c _);

push @description, 'a directory' if (-d _);

push @description, 'executable' if (-x _);

push @description, (($size = -s _)) ? "$size bytes" : 'empty';

push @description, (($daysago = -M _)) ? " modified $daysago days ago" : '';

print "\n\t$file is ", join(', ',@description),"";

}

}

print "\n\t";

}

โ€ฆ or you can download it as ftp_urlโšซpl (supervised by ftp_urlโšซphp changed in thisway, where you may notice multiple HTML input type=submit buttons used to differentiate the two strands of ftp functionality modes).

With this Perl coding we again use command line arguments as the technique to handle user defined data to define the ftp connection.

Think server side languages, think โ€œThe Three Psโ€!



Previous relevant Python ftp Primer Tutorial is shown below.

Python ftp Primer Tutorial

Python ftp Primer Tutorial

Python is a great server side language to learn. Some web server configurations use it as their โ€œgo toโ€ server language, though ours here at rjmprogramming.com.au uses PHP (and so weโ€™ve written a PHP โ€œsupervisorโ€ to dovetail with todayโ€™s Python code).

Weโ€™re going to write this Python code, that facilitates the listing of an ftp URL โ€œpathโ€, to run as if from a Linux (or Mac OS X, which we tested with for the work today) command line.

So, underlying the PHP supervisory liveโœ‚run today, the hard working โ€œduck childโ€ Python goes like โ€ฆ



"""

ftp_url.py - RJM Programming - November 2017

Show some ftp functionality ... thanks to Python & XML by O'Reilly ISBN: 0-596-00128-2

"""

import sys



from urllib import urlopen



def main(argv):



if len(sys.argv) == 5:

fd=urlopen("ftp://" + sys.argv[2] + ":" + sys.argv[3] + "@" + sys.argv[1] + sys.argv[4])

else:

if len(sys.argv) == 4:

fd=urlopen("ftp://" + sys.argv[2] + ":" + sys.argv[3] + "@" + sys.argv[1])

else:

if len(sys.argv) == 3:

fd=urlopen("ftp://mkuulma@ozemail.com.au:" + sys.argv[1] + "@ftp.ozemail.com.au" + sys.argv[2])

else:

if len(sys.argv) == 2:

fd=urlopen("ftp://mkuulma@ozemail.com.au:" + sys.argv[1] + "@ftp.ozemail.com.au")

else:

print "Usage is via ... python ftp_url.py [ftphost=ftp.ozemail.com.au] [ftpusername=mkuulma@ozemail.com.au] ftppassword [subpath=/]"

exit()



print fd.read()

exit()



if __name__ == "__main__":

main(sys.argv[1:])



โ€ฆ or you can download it as ftp_urlโšซpy (supervised by ftp_urlโšซphp).

Interesting, huh?!

If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.

This entry was posted in eLearning, Tutorials and tagged , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *