Anleitung: Anmeldeskript mit Kix erstellen -Part 2- Mehrere Netzwerke
Nachdem im ersten Tutorial auf die Grundlagen eingegangen wurde. Jetzt einige Erweiterung und Verschönerungen. ZB Abhand der IP-Adresse unterschiedliche Skripte ausführen. Macht sich sehr gut einem AD-Directory mit unterschiedlichen Subnetzen.Anhand diesem Beispiel, werden das Umwandeln eines Strings in ein Array gezeigt und die Nutzung von Case...Select, um verschachtelte IF Bedingungen zu vermeiden.
Wir haben zum Beispiel 2 Netzwerke.
Das eine sei mal Netzwerk A mit 192.168.1.0 (255.255.255.0), das andere Netzwerk B mit 192.168.2.0 .
Jetzt möchten wir, dass im Netzwerk A das Skript Skript A ausgeführt wird und im Netzwerk B Skript B.
Grundlagen:
Die erste IP-Adresse steht unter Kix mit der Variablen @ipadress0 zur Verfügung.
Für alle weiteren @ipadressx mit X Element {0,1,2,3}. Mehr kann man nicht auslesen. Aber wer hat mehr als 4 Ip-Adressen.
Schauen wir uns mal das Ding in Aktion an.
$ip0 = Split (@ipaddress0,".",4) schreibt alle Elemente, die durch einen Punkt getrennt sind, in eine Array der Größe 4 $ip0.
Jetzt haben wir ein Array von 4 Zeichen. Mit $ip0 kann man auf das erste Byte der IP-Adresse zugreifen.
$ip0 [2] auf das 3 Byte. Genau dieses brauchen wir um die beiden Netze zu unterscheiden.
Der gesamte Befehlt sieht dann so aus.
Und $ip0 [2] zum unterscheiden.
So benutzt man den Befehl messagebox.
Definiert ist dieser messagebox("Nachricht","Titel",Stil,time-out)
Nachricht und Titel brauchen wohl nicht kommentiert zu werden.
Mit Stil kann man angeben, welche Buttons die Messagebox zur Verfügung stellt (OK/Cancel/Yes/No/Retry), welches Icon in der Box angezeigt wird (Fragezeichen/Informationssymbol/Stopsymbol). Aber genaueres in der KIX Anleitung.
Mit messagebox("Ich weiß nicht, was soll es bedeuten","Info",016,0) wird ein Fenster geöffnet mit dem Titel Info. Nur mit einem OK Button (0) und einem Stopsysmbol (16), der Time-out davon ist 0. (Null bedeutet kein time-out)
5) Was wenn Ip-Adresse nicht den obigen Fällen entspricht (Fehlermeldung errorcode 1).
in diesem Fall wird Case 1 genutzt.
Im nächsten Tutorial geht es, dann um die Behandlung von Errorcodes und die Variablen die KIX anbietet. ($Username;$DOmainname usw)
Gruß Miguel
Wir haben zum Beispiel 2 Netzwerke.
Das eine sei mal Netzwerk A mit 192.168.1.0 (255.255.255.0), das andere Netzwerk B mit 192.168.2.0 .
Jetzt möchten wir, dass im Netzwerk A das Skript Skript A ausgeführt wird und im Netzwerk B Skript B.
Grundlagen:
IP-Adresse:
Die erste IP-Adresse steht unter Kix mit der Variablen @ipadress0 zur Verfügung.
Für alle weiteren @ipadressx mit X Element {0,1,2,3}. Mehr kann man nicht auslesen. Aber wer hat mehr als 4 Ip-Adressen.
IP-Adresse in ein Array umwandeln.
Das bewerkstelligt man mit Split.Split("string","delimiter",count)
$ip0 = Split (@ipaddress0,".",4) schreibt alle Elemente, die durch einen Punkt getrennt sind, in eine Array der Größe 4 $ip0.
Jetzt haben wir ein Array von 4 Zeichen. Mit $ip0 kann man auf das erste Byte der IP-Adresse zugreifen.
$ip0 [2] auf das 3 Byte. Genau dieses brauchen wir um die beiden Netze zu unterscheiden.
Der gesamte Befehlt sieht dann so aus.
; Wenn wir eine IP-Adresse haben, dann wird gesplittet. Ohne IP ist der gesamte Kram witzlos.
If @ipaddress0 <> ""
$ip0 = Split (@ipaddress0,".",4)
EndIf
Select Case ... Endselect
Statt jetzt mehere IF Ausdrücke zu schachteln, nehmen wir diese Konstruktion.Und $ip0 [2] zum unterscheiden.
Select
Case ($ip0 [2] == "1")
Call "SkriptA.kix"
Exit
Case ($ip0 [2] == "2")
Call "SkriptB.kix"
Exit
EndSelect
Message Box:
Möchte man eine Infobox erscheinen lasse.So benutzt man den Befehl messagebox.
Definiert ist dieser messagebox("Nachricht","Titel",Stil,time-out)
Nachricht und Titel brauchen wohl nicht kommentiert zu werden.
Mit Stil kann man angeben, welche Buttons die Messagebox zur Verfügung stellt (OK/Cancel/Yes/No/Retry), welches Icon in der Box angezeigt wird (Fragezeichen/Informationssymbol/Stopsymbol). Aber genaueres in der KIX Anleitung.
Mit messagebox("Ich weiß nicht, was soll es bedeuten","Info",016,0) wird ein Fenster geöffnet mit dem Titel Info. Nur mit einem OK Button (0) und einem Stopsysmbol (16), der Time-out davon ist 0. (Null bedeutet kein time-out)
5) Was wenn Ip-Adresse nicht den obigen Fällen entspricht (Fehlermeldung errorcode 1).
in diesem Fall wird Case 1 genutzt.
Case 1
$key = MessageBox (
; die Chr Befehle sind für die Formatierung gedacht, und fügen Leerzeichen (+Chr(9) und ;Zeilenumbruch +Chr(10) ein.
"User:"+Chr(9)+$user+Chr(10)+
"Host:"+Chr(9)+$host+Chr(10)+
"Datum:"+Chr(9)+$date+Chr(10)+Chr(10)+
"kein Netzwerk vorhanden !?!"+Chr(9)+Chr(10)+Chr(10)+
"Logon Script wird abgebrochen"+Chr(9)+Chr(10)+
" ","Netzwerk INFO",016,0)
Exit
$user = @fullname
$host = @hostname
$date = @day+" "+@date
sollte man vorher definieren.
Anderes Kix_Skript ausführen
Mit Call SkriptA.kixZusammenfassung (Version 2 des Anmeldeskriptes):
;Abbrechen verhindern
Break off
;Console Verstecken
SetConsole("Hide")
;Variablen löschen
FlushKB
; Setzen einiger Variablen, Wird für die Fehlermeldung gebraucht
$user = @fullname
$host = @hostname
$date = @day+" "+@date
;Auslesen der Ip-Adresse
If @ipaddress0 <> ""
;Ip-Adresse in ein Array umwandeln $ip [i] für i < 4
$ip0 = Split (@ipaddress0,".",4)
Else
$ip0 =0,0,0,0
EndIf
Select
Case ($ip0 [3] == "1")
Call "SkriptA.kix"
Exit
Case ($ip0 [3] == "2")
Call "SkriptB.kix"
Exit
; Für alles was oben nicht definiert ist, eine kleine Fehlermeldung
Case 1
$key = MessageBox (
"User:"+Chr(9)+$user+Chr(10)+
"Host:"+Chr(9)+$host+Chr(10)+
"Datum:"+Chr(9)+$date+Chr(10)+Chr(10)+
"kein Netzwerk vorhanden !?!"+Chr(9)+Chr(10)+Chr(10)+
"Logon Script wird abgebrochen"+Chr(9)+Chr(10)+
" ","Netzwerk INFO",016,0)
Exit
EndSelect
Im nächsten Tutorial geht es, dann um die Behandlung von Errorcodes und die Variablen die KIX anbietet. ($Username;$DOmainname usw)
Gruß Miguel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21380
Url: https://administrator.de/contentid/21380
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
1 Kommentar
Super Tutorial!
Beim Umwandeln der IP-Adresse in einen Array muss ich der Vollständigkeit halber noch was hinzufügen.
Die IP-Adresse 192.168.10.20 wurde bei mir wie folgt ausgegeben:
Die Select-Abfrage sieht deshalb bei mir so aus:
Kleines aber wichtiges Detail
Gruss
doemsle
Beim Umwandeln der IP-Adresse in einen Array muss ich der Vollständigkeit halber noch was hinzufügen.
Die IP-Adresse 192.168.10.20 wurde bei mir wie folgt ausgegeben:
192.168. 10. 20
Die Select-Abfrage sieht deshalb bei mir so aus:
Case ($ip0 [2] == " 10")
Kleines aber wichtiges Detail
Gruss
doemsle