gelöst Log über Verfügbarkeit einer Datei auf einem Web- und SFTP-Server

Mitglied: Nidavellir

Nidavellir (Level 1) - Jetzt verbinden

2020/10/14 um 17:39 Uhr, 255 Aufrufe, 9 Kommentare

Hallo zusammen,

eins vorweg: ich habe minimale Kenntnisse in Skripten und werde mich da auch mehr mit beschäftigen müssen.
Ich bitte euch um Hilfe bei folgendem Problem.

Ich muss die Erreichbarkeit eines Servers prüfen und loggen. Hintergrund: angeblich ist der Server häufig nicht erreichbar und die Dateien können nicht abgerufen werden.
Es greifen zwei verschiedene Anwendungen auf den Server zu:
1) es wird eine HTML-Datei, welche über einen Webservice (ich glaube Glassfish) bereitgestellt wird, abgerufen
2) eine PDF wird per SFTP nach lokal kopiert

Um das ganze nachzustellen, hat mir ein Kollege eine Textdatei auf dem Server bereit gestellt, welche ich per URL und SFTP erreichen kann.

Ich habe mit dem Punkt 1 begonnen und lade die txt mittels
herunter. Tritt kein Fehler auf, ist der Webservice verfügbar.
Versuche ich eine nicht vorhandene Datei abzurufen, erhalte ich Fehler 1, versuche ich das mit einem Tippfehler in der URL um einen nicht verfügbaren Server zu simulieren, erhalte ich Fehler 2.

Fehler 1:
Fehler 2:
Diese 3 Möglichkeiten möchte ich dann in ein Log schreiben. Weiß aber nicht wie ich es korrekt mache. Ich habe mit Try/Catch gespielt und konnte zumindest bei Fehlern einen Eintrag erzeugen. Da hatte ich das Problem das die erfolgreichen Zugriffe nicht geschrieben werden können, da ich vermutlich mit Sicherheit falsch vorgehe.

Ich habe ein tolles Beispiel für das Schreiben einer Log-Datei gefunden [1] und möchte das gern nutzen.
Kann mich jemand dabei unterstützen? Oder zumindest in die richtige Richtung schubsen?


Viele Grüße
Nidavellir


[1] https://germanpowershell.com/logdatei-erstellen/
Mitglied: erikro
2020/10/14 um 18:17 Uhr
Moin,


Zitat von Nidavellir:

Hallo zusammen,

eins vorweg: ich habe minimale Kenntnisse in Skripten und werde mich da auch mehr mit beschäftigen müssen.
Ich bitte euch um Hilfe bei folgendem Problem.

Ich muss die Erreichbarkeit eines Servers prüfen und loggen. Hintergrund: angeblich ist der Server häufig nicht erreichbar und die Dateien können nicht abgerufen werden.
Es greifen zwei verschiedene Anwendungen auf den Server zu:
1) es wird eine HTML-Datei, welche über einen Webservice (ich glaube Glassfish) bereitgestellt wird, abgerufen
2) eine PDF wird per SFTP nach lokal kopiert

Hast Du denn schon mal in die Logs des Servers geschaut, was da so steht? Und was steht in den Logs der betroffenen Clients? Was ist der Grund für die Nichterreichbarkeit. Wieso "angeblich"? Meiner Erfahrung nach denken User sich sowas in der Regel nicht aus.

Oder ist das nicht Dein Server? Hast Du dann schon die Kollegen informiert, die den Server betreiben? Meiner Erfahrung nach sind die allermeisten Kollegen, wenn man ihnen anständige Fehlerbeschreibungen mit Originalfehlermeldungen und Logeinträgen zur Verfügung stellt, gerne bereit, das Problem zu lösen.

So, nun die Antwort auf Deine Frage :
https://www.netz-weise-it.training/weisheiten/powershell-ausgabestroeme- ...

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
2020/10/14 um 22:16 Uhr
Hallo Erik,

die Clients, welche Daten von dem Server laden, befinden sich bei einem Kunden im internen Netz. Der Server liegt bei einem Hoster und wird von uns gezahlt und betreut. Ist eine wichtige Information, habe ich aber scheinbar bei meiner Problemschilderung vergessen. Sorry dafür.

Der Kunde ist nicht einfach und fordert einen Vergleich "Erreichbarkeit aus dem internen Netz" und "Erreichbarkeit von extern", z. B. aus unserem Netz. Also wenn der Server von intern nicht erreichbar war, wie sah es von extern aus? Mehr ins Detail kann ich leider nicht gehen, ist aber auch für die Frage nicht weiter relevant.

Zu deinem Link:
So richtig komme ich damit nicht weiter. Muss ich mir morgen nochmal in Ruhe durchlesen.

Ich habe folgenden Weg grob im Kopf: der Download wird mittels "Invoke-WebRequest ..." versucht. Gibt es keinen Fehler wird eine entsprechende Meldung ins Log geschrieben. Falls es einen Fehler gibt, muss eine andere Meldung geschrieben werden. In einer Batch habe ich das vor Ewigkeiten über Errorlevel abgefragt. So etwas scheint es hier nicht zu geben?
Bitte warten ..
Mitglied: Nidavellir
2020/10/15 um 10:17 Uhr
Ich habe jetzt mit einer einfacheren Vorlage für die Log-Erstellung weiter gemacht [1], empfinde ich als übersichtlicher.

Dort habe ich mittels if/else die Logik vorbereitet, muss aber noch auf Basis einer eventuellen Fehlermeldung die Prüfung für das if bauen.
Also das Ergebnis des versuchten Abrufs auf die zwei verschiedenen Fehler prüfen. Da komme ich aktuell nicht weiter...

So sieht es im Moment aus:



[1] https://www.antary.de/2016/11/07/einfaches-logging-fuer-powershell-skrip ...
Bitte warten ..
Mitglied: Nidavellir
2020/10/15, aktualisiert um 13:57 Uhr
Ich denke mir fehlt "nur" noch ein Baustein. Wie bekomme ich den Fehler, welcher bei "Invoke-WebRequest" auftreten kann, korrekt in die Variable $output? Diese wollte ich dann auf die möglichen Meldungen prüfen.

Ich vermute der Link von erikro sollte mir an eben dieser Stelle helfen? Also das ich die Ausgabe mittels Write-Verbose für die Variable oder eine Pipe nutzbar mache?
Falls dem so ist: mit welchem Aufbau?

Ich habe es mit folgendem Aufbau versucht, da erhalte ich aber folgenden Fehler.
Wie bekomme ich also die Fehlermeldung für den -like Operator nutzbar?


EDIT:
Ich habe es mit der Variable $Error versucht, da dort ohnehin die Fehlermeldung landet. Um alte Fehler zu löschen, leere ich die Variable vor der Ausführung.
Ist der Inhalt kein auswertbarer Text?


Vollständiges Skript:

Bitte warten ..
Mitglied: Nidavellir
2020/10/15 um 14:32 Uhr
Ich hoffe das wird mir hier nicht übel genommen oder als Spam aufgefasst, aber ich selbst hasse es wenn Fragen/Probleme ewig ohne eine Lösung stehen bleiben, auch wenn der Fragesteller eine Lösung gefunden hat...

Ich habe mich hier [1] zu Fehlerbehandlung eingelesen und die Möglichkeit von "$error[0].Exception" gefunden. Die dort abgelegte Fehlermeldung kann ich mit dem -like Operator verarbeiten und damit funktioniert mein Skript.

Ich bin aber trotzdem dankbar, falls jemand noch seinen Senf dazugeben möchte! Dennoch schon mal danke das ich hier "laut denken" durfte.


[1] https://www.gngrninja.com/script-ninja/2016/6/5/powershell-getting-start ...

Vollständiges Skript:

Bitte warten ..
Mitglied: erikro
2020/10/15, aktualisiert um 20:44 Uhr
Moin,

Zitat von Nidavellir:

Ich vermute der Link von erikro sollte mir an eben dieser Stelle helfen?

So ist es. Du kannst Dir das ganze Gedöns mit dem If-else sparen und Dir die Fehlermeldungen direkt ins log schreiben. Pass auf:

Hier ist test.txt leer.

Und hier steht die komplette Fehlermeldung in test.txt.

Warum das so ist, steht in dem Link. Hier nochmal genauer von MS direkt:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
2020/10/15 um 20:58 Uhr
Danke für deine Erklärung!
Für die Übersichtlichkeit wollte ich nicht die ganze Meldung, sondern nur eine Kurzfassung ins Log schreiben.

Auf jeden Fall hab ich durch die Bastelei ein paar Sachen gelernt.

Danke & Viele Grüße
Nidavellir
Bitte warten ..
Mitglied: erikro
2020/10/15 um 21:25 Uhr
Zitat von Nidavellir:

Danke für deine Erklärung!

Gerne.

Für die Übersichtlichkeit wollte ich nicht die ganze Meldung, sondern nur eine Kurzfassung ins Log schreiben.

Der Kunde wäre aber beeindruckt. Und wenn man so schwachsinnige Wünsche des Kunden erfüllen muss, dann muss man ihm auch geben, was er will. Dinge, die er nicht wirklich versteht. Vor allem hat aber die Methode den Vorteil, dass Du alle Fehlermeldungen bekommst und nicht nur die, die Du erwartest.

Trotzdem halte ich das Ansinnen weiter für zweifelhaft. Es sagt nichts über die Erreichbarkeit der Site aus, wenn Du es nur von einem Punkt aus misst. Dafür gibt es Dienstleister wie den hier z. B. (erster Treffer bei Tante Googel, keine Empfehlung):
https://www.uptrends.de/tools/uptime

Sinn macht das Messen einer externen Erreichbarkeit nämlich nur dann, wenn man das von allen möglichen Punkten aus unter verschiedenen Bandbreitenbedingungen testet. Wenn ich hier eine in Deutschland gehostete Site messe, sagt das über die Erreichbarkeit in Peru nichts aus.

Deshalb würde ich dem Kunden raten, dass er einfach mal ein paar Euro zahlt und so einen Dienst beauftragt. Alles andere ist sinnlos. Außerdem hat der Kunde ja Zweifel an Deiner Dienstleistung. Allein schon deshalb würde ich da auf einen externen Dienstleister bestehen. Wenn der Kunde partout darauf nicht eingeht, würde ich den je nach Situation vielleicht eine Weile selbst bezahlen, um einfach neutrale Zahlen zu haben, falls es darauf ankommt.

Auf jeden Fall hab ich durch die Bastelei ein paar Sachen gelernt.

Das ist immer gut. Dann noch ein kleiner Hinweis: Du hattest weiter ober erwähnt, dass Du es mit einem try-catch-Konstrukt versucht hast. Das ist eigentlich eine schicke Sache, wenn es um Fehlerbehandlung geht. Man muss dazu nur ein wissen. Du musst an den Befehl, dessen Erfolg Du testen willst, ein
anhängen, sonst funktioniert das nicht richtig. Kommt es nämlich zu einem abbrechenden Fehler, dann wird ohne den Zusatz der catch-Zweig nie ausgeführt, weil ja vorher schon abgebrochen wurde.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
2020/10/19 um 13:58 Uhr
Zitat von erikro:
Vor allem hat aber die Methode den Vorteil, dass Du alle Fehlermeldungen bekommst und nicht nur die, die Du erwartest.
Das ist ein guter Einwand! Mal sehen, ich könnte für auftretende Fehler noch ein zweites Log mit den ausführlichen Meldungen erzeugen lassen.

Trotzdem halte ich das Ansinnen weiter für zweifelhaft. Es sagt nichts über die Erreichbarkeit der Site aus, wenn Du es nur von einem Punkt aus misst. Dafür gibt es Dienstleister wie den hier z. B. (erster Treffer bei Tante Googel, keine Empfehlung):
Die gleiche Prüfung läuft noch von einem anderen Ort aus. Tritt beim Kunde ein Fehler auf, wird das mit dem Log vom zweiten Standort und dem Monitoring vom Server verglichen. Ich bin mir bewusst das das alles nichts ganzes und halbes ist, aber so soll es nun mal sein.

Danke für deine Beteiligung!
Bitte warten ..
Heiß diskutierte Inhalte
Windows Server
Veeam - DCs restore - 0xc00002e2
gelöst Freak-On-SiliconFrageWindows Server22 Kommentare

Servus; Ich hab hier zwei Server 2012R2 DCs auf jeweils einem Hyper-V sitzen. Gesichert wird mit Veeam B&R. JA, ...

CPU, RAM, Mainboards
Hardwareanforderung für Remote Desktop
gelöst Diddi-tbFrageCPU, RAM, Mainboards12 Kommentare

Hallo zusammen, ich brauche mal wieder einen Rat von euch. Mein Chef möchte gerne öfter von zu Hause aus ...

Multimedia & Zubehör
Anforderungen an Telefonanlage
jensgebkenFrageMultimedia & Zubehör10 Kommentare

Hallo Gemeinschaft, bin auf der Suche nach einer Telefonanlage die folgendes können muss: - unterschiedliche Ansagen (z.b. während der ...

LAN, WAN, Wireless
Studentenwohnheim LAN Anschluss mit Router verbinden
SchweisserFrageLAN, WAN, Wireless8 Kommentare

Hallo Leute, ich habe zu dem Thema schon einige Beiträge gelesen, konnte aber für meinen Fall bisher keine funktionierende ...

Humor (lol)
Wir werden alt
Dilbert-MDFrageHumor (lol)7 Kommentare

Themenbereich OT Neulich bei einem IT-Problem: Ein IT-Problem ist kein Problem, wenn man die richtigen Suchbegriffe und Fachwörter in ...

DNS
DNS in AD und pfSense - pfBlockerNG Listen werden nicht beruecksichtigt
DerDummePeterFrageDNS7 Kommentare

Moin, ich bin der Peter und hab mich hier nun doch angemeldet. Ich habe mit IT ueberhaupt nix zu ...

Ähnliche Inhalte
Windows Server
SFTP Freeware
solved adminstQuestionWindows Server8 Comments

Hallo zusammen Ich muss leider auf einem Windows Server einen SFTP Server betreiben für eine KMU. Die meisten Freeware ...

Windows Server

Powershell - suche nach gelöschter Datei aus LOG

krischeuQuestionWindows Server15 Comments

Hi, da bin ich wieder. Ich suchte nach einer Möglichkeit, aus LOG-Dateien zu extrahieren, wo man das Löschen von ...

Routers & Routing

SFTP durch Lancom Firewall

solved mcmaccaQuestionRouters & Routing8 Comments

Hallo zusammen, ich habe hier folgendes Problem bei dem ich aktuell leider nicht weiterkomme: Auf einer Synology Box läuft ...

Batch & Shell

Batch Skript Log Datei Anzahl der gelöschten Dateien

solved ZERRRROOOOQuestionBatch & Shell3 Comments

Hallo Admins, ich habe mir ein bat Skript "gebaut"(Kenn mich mit Batch gar nicht aus ^^): Es funktioniert auch ...

Utilities

SFTP: Synchronisationsclient a la Dropbox

eglipeterQuestionUtilities2 Comments

Hallo zusammen, Ich möchte gerne Dateien, die per SFTP zugänglich sind, auf meinem Client automatisch synchron halten. Mir schwebt ...

Visual Studio

Datei aus dem Web mit VisualBasic 6 öffnen

SarekHLQuestionVisual Studio9 Comments

Hallo zusammen, ich habe hier ein VB6-Programm, welches monatlich automatisch eine bestimmte PDF-Datei aus dem Web (z.B.) herunterladen und ...