Größe einer Datei auf einem anderen Server
Thomas Mirke
- perl
Hallo Perl-Profis,
mit dem Modul File::stat bzw. mit stat oder lstat lassen sich die Eigenschaften einer Datei offenbar nur dann ermitteln, wenn diese sich auf dem gleichen Server befindet wie das Perl-Script. Ich erhalte ansonsten eine leere Liste.
Oder?
Meine Lektüre der perldoc hat mich da nicht wirklich weitergebracht.
Um zu zeigen, dass ich nicht völlig abartige Wünsche habe: File::Copy funktioniert ja immerhin auch serverübergreifend.
Oder gibts da noch einen Trick?
Mir fällt nur spontan ein, auf dem anderen Server ein Script zu installieren, dem ich den file-Namen übergebe und das dann dort stat durchführt und mir wie eine Funktion die gewünschten Eigenschaften dieses files zurückgibt.
Eine direktere Methode fände ich eigentlich eleganter.
Danke im Voraus,
Thomas
hi,
mit dem Modul File::stat bzw. mit stat oder lstat lassen sich die Eigenschaften einer Datei offenbar nur dann ermitteln, wenn diese sich auf dem gleichen Server befindet wie das Perl-Script. Ich erhalte ansonsten eine leere Liste.
Oder?
Versuchs mal so
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?display=9&id=1
...auf die Freigabe zugreifen mit File::stat
Eine direktere Methode fände ich eigentlich eleganter.
use Net::SSH; # Secure SHell Schnittstelle mit versch. Methoden
Gruss, Rolf
Hallo Thomas.
Du könntest mit Hilfe des HTTP-Headers an die gewünschten Infos kommen, denn die Größe der angeforderten Ressource in Byte steht im Feld Content-length. Das könnte man z.B. mit LWP::UserAgent machen, indem du einen Request zum anderen Server schickst, im Erfolgsfall erhältst du einen Responseheader, den du dann auswerten könntest:
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $request = HTTP::Request->new('GET', 'http://www.domain.tld/datei.name');
my $response = $ua->request($request);
print "Content-type: Text/html\n\n";
if( $response->is_success() ) {
my $groesse = length($response->content());
print "Groesse: $groesse Byte";
}
else {
print "Nicht erreichbar.";
}
Freundschaft!
Siechfred