Ich habe ein kleines Tool gebraucht um per Commandline eine Datei irgendwohin hochzuladen. Hier ist es nun, man benötigt WWW::Mechanize:

 #!/usr/bin/perl
 use WWW::Mechanize;
 use MIME::Base64;
 #use LWP::Debug qw(+); # uncomment to enable debugging!
 
 my $agent     = WWW::Mechanize->new( autocheck => 1 );
 my $file     = shift;
 my $user     = "upload";
 my $password = "d83j3zd";
 my $uri      = "http://internal.server.int/upload.cgi";
 my $proxy    = "http://127.0.0.1:3128";
 
 if( ! -s $file ) {
   print STDERR "File $file doesn't exist!\n";
   exit 1;
 }
 
 my @basicauth = (
    Authorization => "Basic " .
    MIME::Base64::encode($user . ":" . $password)
 );
 
 eval {
  $agent->proxy(['http', 'https'], $proxy);
  podwiki.plch->add_header(@basicauth);
  $agent->get($uri);
  $agent->field("file" => $file);
  $agent->field("state" => "upload");
  podwiki.plch->add_header(@basicauth);
  $agent->submit();
 };
 if($@) {
  print STDERR $@;
  exit 1;
 }
 exit 0; 

Das Skript unterstützt Proxy und HTTP Basic Authentisierung. Hier für den Zielwebserver die dazugehörige .htaccess Datei um den Zugriff zu sichern:

 Allow from 192.168.0.0/16
 Allow from 127.0.0.1
 <Files ~ "^\.ht*">
    Order allow,deny
    Deny  from all
 </Files>
 AuthType Basic
 AuthUserFile /www/htdocs/.htpasswd
 AuthName     "File Auto Uploads"
 require      valid-user 

Und zu guter Letzt hier der Link zum ebenfalls benötigten Upload Script, das ist ein Perl-CGI, welches per Formular einen Upload entgegennimmt und im aktuellen Verzeichnis sichert: upload.cgi.