Mega Code Archive

 
Categories / Perl / Network
 

Simple FTP client

#!/usr/bin/perl -w use warnings; use strict; use POSIX qw(O_RDWR O_CREAT O_EXCL tmpnam); use Sys::Hostname; # for 'hostname' die "Simple anonymous FTP command line client\n Usage: $0 <server> <command>\n" unless scalar(@ARGV)>=2; my ($ftp_server,@ftp_command)=@ARGV; my $ftp_resultfile; do {     $ftp_resultfile = tmpnam();     sysopen FTP_RESULT, $ftp_resultfile, O_RDWR|O_CREAT|O_EXCL; } until (defined fileno(FTP_RESULT)); if (open (FTP, "|ftp -n > $ftp_resultfile 2>&1")) {     print "Client running, sending command\n";     print FTP "open $ftp_server\n";     my $email=getlogin.'@'.hostname;     print FTP "user anonymous $email\n";     print FTP "@ftp_command\n";     close FTP; } else {     die "Failed to run client: $!\n"; } print "waiting for response\n"; my @ftp_results = <FTP_RESULT>; check_result(@ftp_results); close FTP_RESULT; unlink $ftp_resultfile; print "Done\n"; sub check_result {      return unless @_;      print "Response:\n";      print "\t$_" foreach @_; }