Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wie kann ich mit einem Shell Skript den Routerlog von Speedports auslesen?

Frage Netzwerke Monitoring

Mitglied: DRwindows97

DRwindows97 (Level 1) - Jetzt verbinden

17.08.2013 um 11:52 Uhr, 5333 Aufrufe, 7 Kommentare, 1 Danke

Hallo Administratoren,
ich schaue mir oft den Router Log an um die Vorgänge im Netzwerk besser zu kontrollieren.

Da der Router allerdings keinen großen Speicher hat fehlen immer eine paar Einträge. Deshalb such ich nun nach einer simplen Lösung den Router Log von einem Shell Skript auszulesen und separat zu speichern.

Das Problem das dabei existiert ist die zwingend notwendigen Eingabe eines Paswortes um auf die Logseite zugreifen zu dürfen.

Die Logseite liegt bei http://speedport.ip/cgi-bin/log
Die Loginseite liegt bei http://speedport.ip/top_start_passwort.stm

Danke für eure Hilfe.
Mitglied: MrNetman
17.08.2013 um 12:20 Uhr
Die Logs werden im Arbeitsspeciher gehalten und gehen beim Neustart verloren - https://feedback.telekom-hilft.de/topics/hallo-wie-lange-ist-die-speiche ...

Aber: Es gibt ungefähr 1000 verschiedene Speedport Modelle und Versionsnummern.
Prinzipiell sollte das aber gehen.
Und gibt es eine Funktion den Log runter zu laden oder wie bei der Fritzbox sich zusenden zu lassen?

Gruß
Netman
Bitte warten ..
Mitglied: DRwindows97
17.08.2013 um 12:26 Uhr
Hallo MrNetman,

Der Sinn des ganzen soll ja sein, auf einem Linuxserver die Logs zu sichern, damit sie eben nicht beim Neustart verloren gehen.
Bei dem verwendeten Speedport W502V gibt es leider keine Funktion wie bei den der Fritzbox.
Das heisst man muss sich immer die Seite anschauen und den Log manuell markieren, kopieren und in eine Textdatei einfügen. Und gerade das möchte ich automatisieren.
Bitte warten ..
Mitglied: colinardo
17.08.2013, aktualisiert 18.08.2013
Hallo DRwindows97,
unter Linux würde ich mich mit CURL auf der Log-Seite einloggen und den Output von CURL an GREP übergeben das dir dann die gewünschte Stelle an der der Log zu finden ist mit einer RegularExpression ausfiltert und dann in eine Datei sichert.

Für den Speedport W502V müsste folgende CURL Zeile den Login ermöglichen(damit holt man sich die Login cookies):
01.
_SPEEDPORT="speedport.ip" 
02.
_PASSWORD="GEHEIM" 
03.
curl "http://${_SPEEDPORT}/cgi-bin/login.cgi" -e "http://${_SPEEDPORT}/hcti_start_passwort.stm" -d "&pws=${_PASSWORD}" -c cookies.txt
danach muss man sich dann z.B. mit firebug die Seiten-URL holen die den LOG enthält und den Inhalt der Seite auslesen (Habe hier keinen Speedport für die URL)
In diesem CURL-Aufruf verwendest du dann die gespeicherten Login-Cookies.
01.
curl -s "http://${_SPEEDPORT}/status_startseite.cgi" -e "http://${_SPEEDPORT}/hcti_start_passwort.stm" -b cookies.txt
Hinweis: -e "http://${_SPEEDPORT}/hcti_start_passwort.stm" ist nicht die URL die aufgerufen werden soll, sondern der REFERER.

Den Inhalt der Seite leitest du dann an GREP und filterst die benötigten Inhalte heraus

Als Beispiel soll dir dieses Script für eine FritzBox dienen, das die Tabelle mit den Anrufen ausließt und in eine Datei schreibt:
01.
#!/bin/bash 
02.
_FBOX="http://fritz.box" 
03.
_PASSWORD="GEHEIM" 
04.
_OUTPUTFILE="calls.txt" 
05.
_CHALLENGE=$(curl -s ${_FBOX}/login.lua | grep "^g_challenge" | awk -F '"' '{ print $2 }') 
06.
_MD5=$(echo -n ${_CHALLENGE}"-"${_PASSWORD} | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}') 
07.
_RESPONSE=${_CHALLENGE}"-"${_MD5} 
08.
_SID=$(curl -i -s -k -d 'response='${_RESPONSE} -d 'page=' ${_FBOX}/login.lua | grep "Location:" | awk -F '=' {' print $NF '}) 
09.
curl -s ${_FBOX}/fon_num/foncalls_list.lua -d 'sid='${_SID} | tr -d '\n' | grep -oP '(?<=<table id="uiCalls" class="zebra_reverse">).*?(?=</table>)' >$_OUTPUFILE
Hoffe das hilft dir weiter.

Grüße Uwe
Bitte warten ..
Mitglied: DRwindows97
17.08.2013 um 22:36 Uhr
Das hilft mir wirklich weiter, danke Uwe.
Die Seite die den Log ausgibt ist laut Firebug http://speedport.ip/cgi-bin/log.

Habe ich dann also unten stehendes Skript richtig angepasst ?


#!/bin/bash Ist klar
_BOX="http:
speedport.ip" Variable für Routeradresse
_PASSWORD="123456"
Variable für Loginpasswort
_OUTPUTFILE="routerlogfile.txt" Variable für Outputdatei


curl "http:
${_BOX}/cgi-bin/login.cgi" -e "http://${_BOX}/hcti_start_passwort.stm" -d "&pws=${_PASSWORD}" -c cookies.txt
curl -s "http://${_BOX}/cgi-bin/log" -e "http://${_BOX}/hcti_start_passwort.stm" -c cookies.txt
Bitte warten ..
Mitglied: colinardo
18.08.2013, aktualisiert um 12:01 Uhr
du würdest uns einen Gefallen tun wenn du zum posten von Code Tags verwenden würdest, dann käme es nämlich nicht zu solch einem Phänomen das z.B. die doppelten Slashes verschwinden wie hier
_BOX="http:speedport.ip"
außerdem hast du ein doppeltes http: eingebaut.
Deine Zeilen sehen dann wenn die Variable _BOX aufgelöst wird so aus
http://http:speedport.ip/cgi-bin
und das geht natürlich gar nicht. Du müsst dich schon entscheiden wo du das "http" hinterlegst, doppelt gemoppelt geht nicht.
Außerdem war die Option -c Cookies.txt im zweiten curl-Aufruf falsch. Sie muss -b Cookies.txt lauten da du die im vorangegangen Aufruf gespeicherten Cookies ja übergeben willst.

nochmal zusammengefasst für dich:
01.
_BOX="http://speedport.ip" 
02.
_PASSWORD="123456" 
03.
_OUTPUTFILE="routerlogfile.txt" 
04.
curl "${_BOX}/cgi-bin/login.cgi" -e "${_BOX}/top_start_passwort.stm" -d "&pws=${_PASSWORD}" -c cookies.txt 
05.
curl -s "${_BOX}/cgi-bin/log" -e "${_BOX}/top_start_passwort.stm" -b cookies.txt >$_OUTPUTFILE
wobei hier ja noch die ganze HTML-Datei im OUTPUTFILE landet. Da ich die Seite hier nicht vor mir habe kann ich dir dazu natürlich kein Code liefern.

Noch ein Hinweis falls es nicht funktioniert: Das CURL-Script gilt für den Speedport W502V Fw 1.17 (Typ A). Könnte sein das sich da bei einer neueren Firmware noch was verändert hat.
Eine Liste für die Speedports findet sich hier.

Grüße Uwe
Bitte warten ..
Mitglied: DRwindows97
18.08.2013 um 15:41 Uhr
Uwe dein Vorschlag hat wunderbar funktioniert.

Ich habe nur noch folgende Zeile angepasst.
curl -s "${_BOX}/cgi-bin/log" -e "${_BOX}/top_start_passwort.stm" -b cookies.txt >>$_OUTPUTFILE
Das in der Datei die Rohdaten stehen ist nicht weiter schlimm, da ich sie via PHP weiterverarbeite.

Vielen Dank für die schnelle Hilfe.
Bitte warten ..
Mitglied: dermaxem
11.02.2015, aktualisiert um 21:20 Uhr
Hallo,

ich bin auch nach der Suche für so eine Anmeldung und Log-File-Auslesen Sache.
Mein Router ist ein Speedport 921V
die Loginseite lautet:
01.
https://speedport.ip/html/login/index.html
die Seite mit dem Logfile:
01.
https://speedport.ip/html/content/config/system_info.html?lang=de
die Infos liegen dort aber ziemlich verschachtelt: s. Screenshoot:
<img>http://fs2.directupload.net/images/150211/98iqhbag.png</img>"

man kann einen Download des Logfiles erzeugen, das geht über einen Button:
01.
 <form action="../../../data/Syslog.json" method="get"> 
02.
          <div class="buttongroup" style="padding:0px"> 
03.
            <button type="submit" i18n:id="btn_exportList">Liste exportieren</button> 
04.
          </div> 
05.
        </form>
-
ich bin leider Linux Neuling. Kann man da ein Script für ein Raspberry machen, das das Logfile dann via Mail verschickt 1x die Woche oder so etwas?
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Windows 10
Skript zum Auslesen und Automatischen Versenden von E-Mails (3)

Frage von weber4134 zum Thema Windows 10 ...

Batch & Shell
Per Skript lokal angeschlossene USB Drucker auslesen (7)

Frage von pixel0815 zum Thema Batch & Shell ...

Outlook & Mail
gelöst PS-Skript zum Auslesen von Informationen (8)

Frage von 112Timo zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...