Du sollst das Internet nicht ausdrucken!
Thou shalt not print out the internet!
logo

 

logo

Ich habe ein kleines Tool gebraucht um per Commandline eine Datei irgendwohin hochzuladen. Hier ist es nun, man benötigt External Link 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: External Link upload.cgi.

 

Last modified: Wed Nov 21 16:45:29 2007. Revision: 1.1