Seite 1 von 1
Scripting-Fragen
Verfasst: Di 26. Mai 2020, 13:43
von HeikoR
Aber generell zu den Scripten hätte ich dann doch noch eine Frage:
Kann ich - auch wenn ich keinen Scan der WindowsPCs durchführe (mache ich über rxScan)- dennoch Scripte auf denen ausführen? Z.B. wäre es praktisch um nur kopierte - aber nicht "installierte" Programme / Scripte vor Ort zu finden und ggf (wie auch immer) zu inventarisieren.
Und noch eine Frage: ich habe im Test (wir sind noch in der Evaluierung) den erkannten Geräten die benutzerdefinierte Eigenschaft "Standort" zugewiesen. Das brauchen wir nicht gänzlich undringend. Den Standort wiederum erkenne ich anhand des IP-Subnetzes. Also Filter auf Subnetz - alles markieren - per Hand "Standort = Musterstadt" zugewiesen ... so weit so unschön.
Gibt es eine Möglichkeit z.B. über die Scripte anhand des Subnetzes XXX (168.192.XXX.YYY) die benutzerdefinierte Eigenschaft "Standort" zuzuweisen?
Re: Scripting-Fragen
Verfasst: Di 26. Mai 2020, 16:13
von WernerB
Skripte funktionieren auch mit der
rxScan.exe. Wichtig ist, dass die
rxScan.ini im selben Verzeichnis liegt. Die
rxScan.ini wird im Sammelverzeichnis beim jeweils nächsten Scan automatisch aktualisiert und sollte wie die
rxScan.exe aktuell gehalten werden, falls sie an eine andere Stelle kopiert wurde.
Hier ein Beispielskript zum Setzen der geskripteten Eigenschaft
Standort:
Code: Alles auswählen
CheckIp GetScannedIp
Function AfterScan()
Dim psNet, ip, ip_temp, ip_list, ip_string
Set psNet = GetPropertySet("NETWORKADAPTER", 1)
If psNet Is Nothing Then
Exit Function
End If
ip_list = psNet("IPADDRESS")
If Len(ip_list) = 0 Then
Exit Function
End If
For Each ip_string In Split(ip_list, " ")
ip_temp = Split(ip_string, ".")
' Nur IPv4
If UBound(ip_temp) = 3 Then
ip = ip_temp
Exit For
End If
Next
If IsEmpty(ip) Then
Exit Function
End If
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
CheckIp ip
End Function
Function CheckIp(ip)
If ip like "192.168.5.*" Then
SetProperty "Standort", "Musterstadt"
ElseIf ip like "192.168.178.*" Then
SetProperty "Standort", "Demodorf"
Else
SetProperty "Standort", "<unbekannt>"
End If
End Function
Das
CheckIp GetScannedIp außerhalb der
AfterScan-Funktion läuft immer. Auch z.B. bei unbekannten Geräten. Da
GetScannedIp nicht bei einem lokalen Scan mit
rxScan.exe funktioniert, gibt es die
AfterScan-Funktion. Diese sucht sich aus den erfassten Netzwerkadressen der primären Netzwerkkarte eine (hoffentlich) passende heraus.
Re: Scripting-Fragen
Verfasst: Mi 27. Mai 2020, 08:20
von HeikoR
Danke erst einmal für die Mühe
Allerdings habe ich da so meine Probleme damit - SetProperty möchte die Benutzerdefinierte Eigenschaft "Filiale" (so heißt die eben bei uns) nicht setzen - ziemlich egal wie ich es mache.
Ich habe das ganze mal recht schlank zum Testen ohne Schnickschnack bei SNMP-Geräten versucht - ziemlich vergeblich.
Erst mit (weil's mir logisch erschien - und immer Test-Button gedrückt um Tippfehler zu vermeiden)
Function AfterSnmpScan()
SetProperty "Filiale","Test"
End Function
Den Aufruf konnte ich noch im Protokoll sehen - aber in den gefundenen Snmp-Geräten tauchte nichs auf
Dann noch mit BeforeSnmpScan() - dann einfach so in das Scriptfeld hinein - recht egal. Das Ergebnis war immer das gleiche, "Test" tauchte nicht unter "Filialen" auf. Ich habe im Script dann alle 3 Methoden drin gelassen - also nicht im Log wundern.
Ich hänge das Log einfach mal an
Re: Scripting-Fragen
Verfasst: Mi 27. Mai 2020, 08:57
von WernerB
Also ich konnte die angehängte Datei einlesen und auch das geskriptete Property Filiale erscheint mit dem Wert "Test" unter dem Gerät.
Es gibt übrigens einen Unterschied zwischen geskripteten und benutzerdefinierten Eigenschaften. Nur erstere lassen sich über ein Skript setzen. Im Gegensatz dazu kann man benutzerdefinierte Eigenschaften nur manuell in der Oberfläche (oder über die Kommandzeile mit invcmd.exe) setzen.
Re: Scripting-Fragen
Verfasst: Mi 27. Mai 2020, 09:45
von HeikoR
Na sieh mal einer an
das muss man in der Tat wissen. Damit tut sich nun auch etwas und ich kann weiterexperementieren.
Re: Scripting-Fragen
Verfasst: Do 4. Jun 2020, 14:04
von HeikoR
Puha - das ganze ist dann doch etwas sperrig ...
Ich hatte die Standort-Zuordnung anhand der IP-Nummer noch etwas erweitern müssen - wir haben auch Teilnetze in denen eben im letzten IP-Bereich noch unterteilt wird.
Bei den SNMP-Geräten kein Ding: ip-Nummer ermittelt, mit Split zuerteilt und dann jeweils Abfragen nach ip3 und ip4 gemacht. Klappt gut.
Code: Alles auswählen
ip = GetScannedIP(ip)
ipA = Split(ip,".")
ip3 = ipA(2)
ip4 = ipA(3)
If ip3 = 2 Or ip3 = 3 Then
Filiale ="110"
ElseIf ip3 = 17 And ip4 > 128 And ip4 < 160 Then
Filiale ="550"
....
SetProperty "Filiale", Filiale
End Function
Nun wollte ich das ganze noch für die offline gescannten Windows-Maschinen machen. Der Script kam ja aus diesem Thread. Das ganze noch etwas angepasst (damit ich den unteren Scriptteil für SNMP und Windows gleich halten kann).
... (wie oben 2 Postings höher erwähnt)
Code: Alles auswählen
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
ip3 = CLng(ip(2))
ip4 = CLng(ip(3))
If ip3 = 2 Or ip3 = 3 Then
Filiale ="110"
ElseIf ip3 = 17 And ip4 > 128 And ip4 < 160 Then
Filiale ="550"
....
SetProperty "Filiale", Filiale
End Function
im Endeffekt habe ich also nur noch zusätzlich die 2 (weiter oben deklarierten) Variablen ip3 und ip4 noch einmal mit dem 3. und 4. Abschnitt von ip zugewiesen. Die function hatte ich aufgelöst und alles in einen Scriptteil geschrieben.
Allerdings kommt hier der Fehler "Error in "Windows Standort Neu" at line 28: Not an array or object. (ScriptError)" bei der Ausführung.
Vorher hatte ich schon versucht die function CheckIP weiter zu übernehmen und die übergebene Variable ip mit Split zu zerlegen - hier habe ich auch nur Fehlermeldungen gekommen dass ip3/ip4 out of bounds sind ...
Herrje - VB ist hier wohl echt nicht mein Freund
Re: Scripting-Fragen
Verfasst: Do 4. Jun 2020, 14:27
von WernerB
Die Zeile 27
Code: Alles auswählen
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
überschreibt das Array
ip mit der textuellen IP. In
ip steht danach also kein Array mehr, in dem man Elemente abfragen könnte. Daher der Fehler.
Nachdem
ip in der Textform später nicht verwendet wird, würde ich vorschlagen die Zeile einfach zu löschen.
Re: Scripting-Fragen
Verfasst: Do 4. Jun 2020, 14:40
von HeikoR
Ok ... für heute sollte ich Schluss machen ... ich sehe den Wald vor Bäumen nicht mehr
Danke für die Antwort