Ich habe ein kleines Tool gebraucht um per Commandline eine Datei irgendwohin hochzuladen. Hier ist es nun, man benoetigt 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); $mech->add_header(@basicauth); $agent->get($uri); $agent->field("file" => $file); $agent->field("state" => "upload"); $mech->add_header(@basicauth); $agent->submit(); }; if($@) { print STDERR $@; exit 1; } exit 0;

Das Skript unterstuetzt Proxy und HTTP Basic Authentisierung. Hier fuer den Zielwebserver die dazugehoerige .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 benoetigten Upload Script, das ist ein Perl-CGI, welches per Formular einen Upload entgegennimmt und im aktuellen Verzeichnis sichert: upload.cgi.