ubuntuusers.de

Seitengeschwindigkeit und Verfügbarkeit einer Homepage messe

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

lip

Anmeldungsdatum:
11. Oktober 2007

Beiträge: 273

Hallo,
ich möchte ein einfaches Script schreiben, das z.B. jede Minute eine Datei von einem Webserver runterlädt, diese nach dem Download löscht und eine Minute später wieder von vorne anfängt. Dazu soll es in einer Log-Datei die Zeit des Downloads speichern und wie lange der Download (bzw. wie schnell geladen wurde)
Das sollte dann in der Log-Datei so aussehen:

20:00:00 1Sek 223 kB/s
20:01:00 2Sek 190 kB/s
usw.

Da ich von Shell-Programmierung absolut keine Ahnung habe kam bis jetzt erst folgendes Script raus:

#!/bin/bash
wget http://quelle/bild.png -P/home/Lip/Download-Script/ 
rm bild.png
./dl

Wie kann ich das Script zum loggen überreden?
Wie kann ich eine einminütige Pause einrichten? Sonst dröhn ich ja den Webserver zu\^^

Danke für Eure Antworten,
Lip

chrisjakob Team-Icon

Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

wget .. blabla >> log.txt
Nur müsste man in deinem Fall ein wenig mit cut arbeiten...

sleep 60 sorgt dafür dass 60 sekunde pause gemacht wird

lip

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2007

Beiträge: 273

Ich will wissen ob mein Webspace zu jederzeit gut zu erreichen ist. Das versuche ich zu erkennen, indem ich im Minutentakt ein Bild runterlade und protokolliere, wie schnell der Download ging.
So das ich dann sehen kann "Aha, von 15-16 Uhr hat der Download immer sehr lange gedauert, da war der Server wohl etwas langsam". Klar, so richtig zum Performance testen ist mein Vorhaben viel zu Fehleranfällig (meine eigene Internetanbindung, ich teste nur die Download Geschwindigkeit und nicht die Zeit die der Server zum Generieren dynamischer Inhalte braucht usw.), aber für meine Zwecke reicht das völlig.

#!/bin/bash
wget -o log.txt http://quelle/bild.png -P/home/Lip/Download-Script/
rm bild.png
sleep 60
./dl


Dieses Script habe ich jetzt. (Bei sleep wohl keine Klammern machen, oder? Zumindest gehts nur so)

Was er jetzt erfolgreich macht ist die 60 Sekunden warten. Auch die Log-Datei erstellt er erfolgreich, jedoch überschreibt er sie jedesmal, sodass immer nur der letze Download protokolliert ist.
Ich hab mir die Log-Datei die wget erstellt mal angeschaut, eigentlich ist nur die letze Zeile intressant, die so aussieht:

02:58:14 (112.40 KB/s) - »/home/Lip/Download/bild.png« gespeichert [164339]

Toll wäre es, wenn man einfach die letze Zeile nehmen würde und die speichern würde, sodass die Logdatei dann so aussieht:

02:58:14 (112.40 KB/s) - »/home/Lip/Download/bild.png« gespeichert [164339]
02:59:14 (132.40 KB/s) - »/home/Lip/Download/bild.png« gespeichert [164339]
03:00:14 (117.40 KB/s) - »/home/Lip/Download/bild.png« gespeichert [164339]

Ich hab mal nach dem Cut befehl gegoogelt, jedoch scheint der immer nur Spaltenweise zu arbeiten, oder? Sonst könnte ich doch mit Hilfe Cut's ein solches Script machen: (mal auf Deutsch 😉 )

Nimm die letze Zeile aus der Datei "log.txt"
Füge sie an das Ende der Datei "log2.txt" an und speichere

Ein Dickes Danke schonmal für Deine Hilfe, sogar um die Zeit ☺

chrisjakob Team-Icon

Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

Wenn du wget ... >> log.txt nutzt sollte es immer ans Ende der Datei angehängt werden. Wie du jetz die Ausgabe schneiden kannst, kann ich dir nicht sagen.

sleep 60 is richtig. Hab mich mit den Klammern vertan.

lip

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2007

Beiträge: 273

Mir ist die Syntax nicht so klar. Wo genau kommen die ">>" hin? Ich hab mit den Zeichen ein wenig experimentiert, aber es kamen leider immer nur Fehlermeldungen ☹

chrisjakob Team-Icon

Avatar von chrisjakob

Anmeldungsdatum:
21. August 2006

Beiträge: 1808

Wohnort: Köln

wget www.deineurl.de/lala.jpg >> log.txt
Damit wird der Output nur umgeleitet. Ist aber sowieso nicht ganz was du möchtest.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

a) Die Ausgabe in eine temporäre Datei schreiben, und mit tail -n 1 QUELLE >> ZIEL die letzte Zeile abschneiden, und ans Log anhängen:

#!/bin/bash
wget -o tmp.txt http://quelle/bild.png -P/home/Lip/Download-Script/
tail -n 1 tmp.txt >> log.txt 
rm bild.png
sleep 60
./dl


./dl ist das Script selbst, das sich am Ende neu startet.
Das funktioniert so, aber der erste Aufruf ist nicht zu Ende, solange der das ./dl nicht abgearbeitet ist, also das zweite ./dl, ... das Dritte, ... das n-te.
Nach 24 Stunden hast Du 1440 Prozesse gestartet, und keinen beendet.
ps und top werden dann leicht unbenutzbar.

Eine Endlosschleife machst Du lieber so:

while ( true )
do
         something
done


Wie groß ist die Grafik? 100k? Das wären dann 1.4 GB am Tag, oder 43 GB im Monat - Traffic spielt keine Rolle?
Weitere Faustrechnungen mit größeren Intervallen und kleineren Grafiken kannst Du sicher selbst machen.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Hast du kein Zugriff auf die Apache Log Dateien?

Dann kannst du diese einfach Auswerten. Und kannst genaue Infos darüber geben zu welcher Stunde wieviele Besucher / Traffic und welche Seiten heruntergeladen wurden.

EDIT:
Du kannst auch folgendes kleine Skript verwenden.

#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw(time);
use File::Temp;
use LWP::Simple;

URL:
for my $url ( @ARGV ) {
    my $tmp    = File::Temp->new();

    my $start  = time;
    my $status = getstore( $url, $tmp->filename );
    my $end    = time;

    if ( is_error($status) ) {
        warn "Fehler beim Herunterladen von '$url'\n";
        next URL;
    }

    my $runtime = $end - $start;
    my $size    = -s $tmp;

    printf "%d bytes in %lf Sekunden bei Durschnittlichen %lf KByte/sec. heruntergeladen.\n",
       $size, $runtime, (($size/1024)/$runtime);
}
./download.pl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2
45488158 bytes in 84.936827 Sekunden bei Durschnittlichen 523.000810 KByte/sec. heruntergeladen.

Das Rechnet dann richtig aus wie lange er gebraucht hat um die Datei herunterzuladen und somit entsteht der durchschnittswert. Bei zu kleinen Dateien ist aber die Messung nicht unbedingt richtig, da unter umständen mehr Zeit vergehen kann für ein Verbindungsaufbau. Aber der Traffic der durch soetwas erzeugt wird finde ich auch nicht zu vernachlässigen wie user unkown sagte. Die Log Datei durchzuparsen halte ich noch für am besten, vorallem da du dadurch die meisten und genausten Informationen bekommst. Ansonsten reicht es auch wenn du das Skript nur jede halbe Stunde, oder Stunde aufrufst.

(Achso die Bibliothek "libwww-perl" muss für LWP installiert sein, wenn noch nicht vorhanden ist)

lip

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2007

Beiträge: 273

So, sorry für die späte Antwort, aber jetzt hat es geklappt!

Ich hab auf euer Anraten das Script so eingestellt, das es nur alle 30 Minuten die Datei herrunterlädt. Jetzt muss ich den Rechner mal ein paar Tage laufen lassen 😉

Danke Euch!

Antworten |