#!/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 \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 = ; check_result(@ftp_results); close FTP_RESULT; unlink $ftp_resultfile; print "Done\n"; sub check_result { return unless @_; print "Response:\n"; print "\t$_" foreach @_; }