Am Dienstag, 7. November 2006 02:39 schrieb David Haller: Hallo David,
Am Mon, 06 Nov 2006, Al Bogner schrieb:
Am Montag, 6. November 2006 20:07 schrieb David Haller:
[..]
Bzgl. Cache kann curl wohl nix.
Hmm, macht es dann überhaupt Sinn, was ich vorhabe:
Ich lade in regelmäßigen Abständen eine Datei runter und vergleiche den Inhalt mit grep bzw- md5sum. Das hat bis jetzt ganz gut geklappt, wenn der Hoster nicht funktionierte. Dienste wie siteuptime haben vergleichsweise oft keinen Alarm geschlagen und aufwendigere Tools habe ich wieder aufgehört zu verwenden.
Wenn ich nicht sicher seiner kann, dass die sehr kleine Datei _nicht_ aus irgendeinem Cache kommt, dann kann ich es gleich sein lassen. Teilweise habe ich nur eine Datei angelegt, ok reingeschrieben und dann in der runtergeladene Datei nach ok "gegrept".
Irgendwelche Ideen? Es muss nicht unbedingt curl sein, ich will nur sicher gehen, dass ich wirklich die Datei vom Server runterlade.
Hast du perl?
Ja, aber ob ich alles verwenden darf, kann ich nicht sagen, wie teste ich das vorab?
Mit libwww (d.h. konkret LWP::UserAgent)?
Wie in einem Fremdsystem möglichst "unauffällig" überprüfen?
Wenn ja kann man das ganze im RAM abfeiern und dann ggfs. immer noch als Datei ins Dateisystem rausschreiben.
==== Schema [Digest Kram ungetestet] ==== #!/usr/bin/perl -w use strict; use LWP::UserAgent; # use Digest::MD5 qw(md5_hex); my $url = 'http://deine.domain.tld/foo'; my $ua = LWP::UserAgent->new(); $ua->default_headers->push_header('Pragma' => "no-cache"); my $response = $ua->get($url);
if ($response->is_success) { # # Datei "greppen" # if( $response->content =~ /ok/ ) { # ## machwas # }
# # Digest erstellen vergleiche, alte Datei ueberschreiben # $digest = md5_hex($response->content); # open(FILE, "/vergleichs/datei") or die "Can't open '$file': $!"; # binmode(FILE); # my $olddigest = Digest::MD5->new->addfile(*FILE)->hexdigest; # if( $digest eq $olddigest) { # seek(FILE, 0, SEEK_SET) or die "$!\n"; # print FILE $response->content; # Bisherige Datei ueberschreiben # } # close(FILE);
# einfach ausgeben print $response->content;
} else { die $response->status_line; }
Per default verwendet LWP keinen Proxy (auch nicht aus Umgebungsvariablen), ggfs. kannst du aber mit no_proxy (siehe LWP::UserAgent Doku) auch gezielt abschalten.
Ich probiere das aus, sobald ich geprüft habe, ob ich überhaupt die nötigen Pakete inkl. Rechte habe. Hoster1: perl -v This is perl, v5.8.7 built for x86_64-linux Hoster2: perl -v This is perl, v5.8.7 built for i686-linux
BTW:
The latest stable version of Wget is 1.10.2.
Bei Suse 10.0 gibt es nur 1.10.1. Lässt Suse da wirklich eine Sicherheitslücke offen?
[..]
src/ChangeLog 2005-10-13 Daniel Stenberg <daniel@haxx.se> * http-ntlm.c (ntlm_output): Fixed buffer overflow vulnerability.
Moeglich. Kann aber auch sein, dass SUSE NTLM schlicht deaktiviert hat.
strings `which wget` | grep -i ntlm
von Suse 10.0: strings `which wget` | grep -i ntlm NTLM NTLM Received a type-2 NTLM message. Unexpected empty NTLM message. Empty NTLM message, starting transaction. Creating a type-1 NTLM message. NTLMSSP%c Creating a type-3 NTLM message. NTLMSSP%c Al