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.