Top-Themen

Aktuelle Themen (A bis Z)

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

Wert aus Webseite auslesen

Frage Entwicklung Batch & Shell

Mitglied: Gundelputz

Gundelputz (Level 1) - Jetzt verbinden

06.06.2013 um 12:13 Uhr, 5055 Aufrufe, 16 Kommentare, 6 Danke

ein freundliches Hallo an alle,

ich möchte einen Wert(Zählerstand Drucker) aus der Webseites des Gerätes auslesen. Bis jetzt habe ich es aber nur geschaft die Webseite aus zu lesen.
$objWebClient = (New-Object System.Net.WebClient)
$objWebClient.DownloadString("http://10.2.38.79/cgi-bin/dynamic/printer/config/reports/devicestatisti ...")
es wird mir dann Zeile für Zeile angezeigt.
Speicher ich alles in einer txt so wird dort der Zeilenumbruch nicht mitgeschrieben.

1. Frage: Wie kann ich eine TXT oder CSV mit Zeilenumbuch speichern

in Zeile 125 steht der Wert(2425) den ich benötige
<TR><td><p align="left" style="margin-left: 40;">Gesamt</p></td><td><p> 2425 </p></td>

2. Frage: Wie kann ich den Wert auslesen denn ich benötige
Danke schon mal im vorraus
Mitglied: Gundelputz
06.06.2013 um 12:53 Uhr
vergesst die erste Frage. in einer csv siets gut aus. drauch mir als bloss den String aus Zeile 125 ein zu lesen und dann zerlegen. hier stosse ich aber an meine Grenzen.
ich übergebe den String also in eine Variable. anschliessend müsste ich dann mit Get-Matches den String auswerten. Leider finde ich im handbuch nichts passendes.

$zaehler = $string | Get-Matches "(??????)"

kann mir mal jemand den Befehl erklähren?
Bitte warten ..
Mitglied: IceAge
06.06.2013, aktualisiert um 13:05 Uhr
servus,

warum so kompliziert? könntest doch auch den Zähler mit smnpget auslesen..

Grüße Ice
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 13:11 Uhr
Dies war mein ürsprunglicher Ansatz. Siehe "Wert aus Webseite auslesen".
Leider hat mir Da Lexmark, mit seinen neuen Farbsystemen, einen Strich durch die Rechnung gemacht. Da können die neuen OID's nich mehr mit smnpget abgrufen werden. Also nun dieser Weg. sit zwar etwas komplizierter aber nicht ganz unmöglich.
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 13:37 Uhr
Hallo Gundelputz,
mit Regular Expressions und einer optimierten Funktion mit Group-Matching kannst du deinen gewünschten String extrahieren:

01.
Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}} 
02.
 
03.
$string = Get-Content "C:\DeineTextdatei.txt" 
04.
$zaehler = $string | Get-Matches "Gesamt<\/p><\/td><td><p> ?(\d+) ?<\/p><\/td>" 1
Grüße Uwe
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 13:33 Uhr
Hi Uwe,
vom verstehen des Befehls binich noch weit entfehrnt aber habs natürlich gleich mal ausprobiert mit folgendem Ergebnis

PS H:\> Function Get-Matches($Pattern,$groupNumber = 0) {begin { $regex = New-Object Regex($pattern) };process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value }}}
$string = Get-Content "C:\PS_proj\site1.txt"
$zaehler = $string | Get-Matches "$Textdatei | Get-Matches "Gesamt<\/p><\/td><td><p> (\d+) <\/p><\/td>" 1" 1

Der Operator "<" wird noch nicht unterstützt.
At line:3 char:92

kann es sein das PS einige Sonderzeichen als Operator erkennt(wie zB für den Beginn einer Variable) und wenn ja wie muss man es das schreiben das sies nicht mehr interpretiert wird?
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 13:50 Uhr
Da hast du den Code zu schnell kopiert ... war noch ein Fehler drin ... komme gerade vom Holz machen , da hat man noch zu dicke Finger ... jetzt gehts

Nochmal zum Verständnis:

1. Funktion für das Regular Expression Group-Matching
Diese Funktion braucht dich im Moment nicht sehr zu interessieren, diese behebt so manche Ungereimtheiten beim Umgang mit RegEx in der Powershell und erlaubt das einfache extrahieren von Teilen aus einem String. Aufgerufen wird die Funktion so $textInDemGesuchtWird | Get-Matches "[REGEX-Pattern]" [Regex-Groupnumber]
function Get-Matches($Pattern,$groupNumber = 0) { 
  begin { $regex = New-Object Regex($pattern) } 
  process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value } } 
}
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 13:45 Uhr
bekomme trotzdem Fehlermeldung:

Der Operator "<" wird noch nicht unterstützt.
At line:14 char:92

Der Zeichenfolge, beginnend mit:
Bei Zeile:14 Zeichen:103

$zaehler = $string | Get-Matches "$Textdatei | Get-Matches "Gesamt<\/p><\/td><td><p> (\d+) <\/p><\/td> <<<< " 1

fehlt der Terminator: ".
At line:17 char:1

hab den Cod mal angepasst bekomme dann andere Fehlermeldung

Function Get-Matches($Pattern,$groupNumber = 0)
{begin
{
$regex = New-Object Regex($pattern) };
process
{
foreach ($match in ($regex.Matches($_)))
{
([Object[]]$match.Groups)[$groupNumber].Value
}
}
}
$string = Get-Content "C:\PS_proj\site1.txt"
$zaehler = $string | Get-Matches "$Textdatei | Get-Matches "Gesamt"<"\/p"><"\/td"><"td"><"p">" (\d+) "<"\/p"><"\/td">"1"

Der Zeichenfolge, beginnend mit:
Bei Zeile:14 Zeichen:120

$zaehler = $string | Get-Matches "$Textdatei | Get-Matches "Gesamt"<"\/p"><"\/td"><"td"><"p">" (\d+) "<"\/p"><"\/td">"1 <<<< "

fehlt der Terminator: ".
At line:14 char:122
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 13:48 Uhr
Lade die Seite mal neu ich glaube dein Browser hat noch den alten Cache geladen ....das ist noch der alte Code
und bitte benutze doch die Formatierungs-Codes für Programm-Code hier im Forum; siehe FAQ
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 14:01 Uhr
jetzt passt es Super. Sogar besser als erwartet.

PS H:\> Function Get-Matches($Pattern,$groupNumber = 0)
{begin
{
$regex = New-Object Regex($pattern) };
process
{
foreach ($match in ($regex.Matches($_)))
{
([Object[]]$match.Groups)[$groupNumber].Value
}
}
}
$string = Get-Content "C:\PS_proj\site1.txt"
$zaehler = $string | Get-Matches "Gesamt<\/p><\/td><td><p> ?(\d+) ?<\/p><\/td>" 1


_______________________________________________________________________________________________________________________________________________
PS H:\> Function Get-Matches($Pattern,$groupNumber = 0)
{begin
{
$regex = New-Object Regex($pattern) };
process
{
foreach ($match in ($regex.Matches($_)))
{
([Object[]]$match.Groups)[$groupNumber].Value
}
}
}
$string = Get-Content "C:\PS_proj\site1.txt"
$zaehler = $string | Get-Matches "Gesamt<\/p><\/td><td><p> ?(\d+) ?<\/p><\/td>" 1
$zaehler

2340
1103
1322

wie du sehen kannst spuckt er mir genau die drei Werte aus die ich haben will. mir ist jetzt klar das es das Suchergebnis drei mal giebt. Nun stelllen sich mir gleich wieder ein paar Fragen.
der Syntax ?(\d+) wie darf ich denn verstehen oder besser gesagt wo finde ich im Handbuch die Erklärung dazu?
Die andere Frage die ich mir stelle ist: wird das ergebnis 3x nach einnander ausgegeben? Und wie fange ich diese in seperaten Variablen ab?

So viele Fragen und noch soviel zu lehrnen und zu verstehen?
Wieder ein mal bin ich dir zu Dank verpflichtet.
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 14:12 Uhr
Zitat von Gundelputz:
der Syntax ?(\d+) wie darf ich denn verstehen oder besser gesagt wo finde ich im Handbuch die Erklärung dazu?
Das hier zu erläutern würde den Rahmen sprengen, zu Regular Expressions gibt es genug Tutorials im Netz z.B. hier
Zur Erläuterung [Leerzeichen]?(\d+)[Leerzeichen]? ,würde man es ausschreiben sähe das so aus:

6cd5a913b1955e112e68dc05682f0580 - Klicke auf das Bild, um es zu vergrößern

Die andere Frage die ich mir stelle ist: wird das ergebnis 3x nach einnander ausgegeben? Und wie fange ich diese in seperaten
Variablen ab?
dazu muss das RegEx entsprechend dem Code angepasst werden, damit jeweils nur die entsprechende Stelle gematcht wird, das kann ich jetzt aber nur raten da dein HTML-Code hier nicht steht.
Ein gutes Tool zum Anfangen mit RegEx-Patterns, ist das hier -> http://www.regexbuddy.com/
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 14:39 Uhr
OK
mir raucht schon der Kopf.
hab jetzt mal zu Testzwecken einfach die Ausgabe in eine TXT geleitet.
hier stehen jetzt die Werte seperat in einer Zeile was mich zu der Annahme bringt dasdie werte nach ein nander ausgegeben werden.
Um jetzt ers mal weiter zu kommen noch eine(für heute hoffentlich) letzte Frage.
Wie kann ich die einzelnen Zeilen der txt-datei auslesen und in sep. Variablen speichern.
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 14:55 Uhr
Leite doch die Ausgabe nicht in eine Textdatei sondern mach das direkt mit der Variable $zaehler
z.B. so (Zur Info: `n ist ein Zeilenumbruch)
01.
$var1 = $zaehler.split("`n")[0] 
02.
$var2 = $zaehler.split("`n")[1] 
03.
$var3 = $zaehler.split("`n")[2]
tu langsam zu viel auf einmal macht dich kirre...
Uwe
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 14:59 Uhr
sah super aus
aber offennsichtlicht wird .split nich unterstüzt

Fehler beim Aufrufen der Methode, da [System.Object[]] keine Methode mit dem Namen "split" enthält.
Bei C:\PS_proj\website_auswerten.ps1:18 Zeichen:23

$var1 = $zaehler.split <<<< ("`n")[0]

+ CategoryInfo : InvalidOperation: (split:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Bitte warten ..
Mitglied: colinardo
06.06.2013 um 15:05 Uhr
ach,.... ist ja schon ein Array dann geht's so:

01.
$var1 = $zaehler[0] 
02.
$var2 = $zaehler[1]
usw.
Bitte warten ..
Mitglied: Gundelputz
06.06.2013 um 15:10 Uhr
so einfach kann es sein.
hab mir schon gedacht das es was mit nem Array zu tun hat. aber nicht das es schon eins ist. wollte gerade ein draus machen und bin gescheitert.

so. Jetzt müsste ich aber einiges zusammen haben um ne Weile beschäftigt zu sein.

Vielen Dank für deine schnelle und kompetente Hilfe.
Bitte warten ..
Mitglied: colinardo
06.06.2013, aktualisiert um 15:19 Uhr
gerne, noch zu Arrays - die erstellt man so:

Leeres Array erstellen
01.
$array = @()
Array schon mit Werten erstellen
01.
$array = @("wert1","wert2,"wert3")
Zu einem Array einen Eintrag hinzufügen
01.
$array += "NeuerWert"
Bitte warten ..
Ähnliche Inhalte
Monitoring
SNMP werte Auslesen
gelöst Frage von sunicsMonitoring3 Kommentare

Hallo Zusammen, gibt es ein Tool, welches mir anzeigt, welche verfügbaren werte über einen SNMP public string eines Gerätes ...

Batch & Shell
Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen
gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Windows 8
JSON Datei Wert auslesen und bei bestimmten Vielfachen des Wertes ein anderes Programm öffnen
gelöst Frage von drkoaegWindows 82 Kommentare

Hallo :) Ich habe eine JSON Datei -die ich per Editor auslesen kann- mit einem Zahlenwert, der mit der ...

Entwicklung
ServerLog.txt von einem FTP Server auslesen und auf einer Webseite wiedergeben
Frage von BullridgeEntwicklung2 Kommentare

Ich brauche Hilfe undzwar möchte ich den ServerLog.txt von meinem Gameserver auf meine Webseite wiedergeben. Also eine Art Live ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell13 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...