; ******************* Echo ******************** func echo ($output, $echo_titel='Meins') msgbox (0 , $echo_titel , $output) endfunc ;********************************************** ;********************************************** ; Tokentrenner ohne Array !! ; Übergabe: Der String der untesucht wird ; Übergabe: Der String der den ersten String teilt ; Übergabe: Das wievielte Teil ; Ausgabe: Den gesuchten Token oder eine Leerstring (=Fehler) ;********************************************** func gettok ($string, $teiler, $teilnummer) local $neu , $tmp $tmp = stringsplit ($string, $teiler, 1) if $tmp[0] >= $teilnummer then $neu = $tmp[$teilnummer] else $neu = "" endif return $neu endfunc ;********************************************** ;******************************************************* Func print ($text) ConsoleWrite ($text & @crlf) EndFunc ;******************************************************* ;********************************************** ; Wie oft gibt es den String im String ; Übergabe: der zu druchsuchende String ; Übergabe: der zu suchende String ; Rückgabe: Trefferanzahl ;********************************************** func cntvar ($string, $suche) local $summe, $start, $do if $string = "" or $suche = "" then return false endif $start = 1 $summe = 0 do $do = StringInStr ($string, $suche, 0, 1, $start) if $do <> 0 then $summe = $summe + 1 $start = $do + 1 endif until $do = 0 return ($summe) endfunc ;********************************************** ;******************************************************* ;* Ladet eine Textdatei schnell in ein Array * ;* Wichtig: Das Array muss im Hauptprogramm definiert * ;* werden! * ;* * ;* Übergabe: Array * ;* Übergabe: Datei die geladen wird * ;* Übergabe: Trennzeichen (CRLF=default) * ;* Rückgbae: 0 ....OK * ;* Rückgabe: -1 ...Datei konnte nicht gefunden/geladen * ;* Rückgabe: -2 ...Kein Array übergeben * ;******************************************************* func fastload_to_array(ByRef $array, $datei, $tokenizer=@CRLF) local $daten local $fh = fileopen ($datei, 0) if $fh -1 then Return -1 ;Datei konnte nicht gefunden/geöffnet werden if IsArray($array) = 0 then fileclose ($fh) Return -2 ;Wenn kein Array übergeben worden ist EndIf $daten = FileRead($fh) fileclose ($fh) local $a = 0 local $last = 1 local $treffer local $fertig local $tmp = ObjCreate("Scripting.Dictionary") local $ret Do $a = $a + 1 $treffer = stringinstr ($daten, $tokenizer ,2,1,$last) $fertig = stringmid ($daten, $last, $treffer - $last) $tmp.add ($a, $fertig) ;Zuerst die Daten in an Dic geben (ist dynamisch) $last = $treffer + 1 until $treffer = 0 redim $array[$tmp.count + 1] ;Array auf die Größe der Elemente dimensonieren $a = 0 for $ret in $tmp.keys $a = $a + 1 $array[$a] = $tmp.item($ret) Next $array[0] = $a -1 $tmp.removeall return 0 EndFunc ;******************************************************* ;************************************************************* ; Suche den FQDN anhand des NetBios-Namen im IPAM ; Übergabe: PC-Name ; Übergabe : True => es werden auch IP-Adressen gesucht; False = keine IP ; Übergabe : Unterschiedliche URL für 0 = nichts, 1 = Wien1, 2 = EDU ; Rückgabe: -1 ... Keinen Namen gefunden ; Rückgabe: FQDN ; Rückgabe: bei True: FQDN IP|IP... ;************************************************************* func _nslookup_se ($pc_name, $full = False, $net = 1) local $pcname = StringLower ($pc_name) local $ipam_user = "Username" local $ipam_pw = "Password" local $url Select case $net = 1 $url = 'https://' & $ipam_user & ':' & $ipam_pw & '@fqdn/wapi/v2.2/record:host?name~='& $pcname case $net = 2 $url ="https://fqdn/edu-ipam/get_hosts/" & $pcname case $net = 0 Return -1 EndSelect local $data local $tmp, $i local $Host_pos local $Host_end local $fqdn local $searchstring1 = '"host": "' local $searchstring1_end = '",' local $ip_search = '"ipv4addr": "' local $ip_adresse local $ip_zahl $data = InetRead ($url, 2) ;Webabfrage $data = BinaryToString ($data,1) ;Muss von Binary nach ASCII umgewandelt werden ;echo ($data) ;IP-Adresse(n) parsen if $full = True Then $ip_zahl = cntvar ($data, $ip_search) ;Anzahl der IP-Adressen if $ip_zahl > 0 Then for $i = 1 to $ip_zahl $Host_pos = StringInStr ($data, $ip_search, 0, $i ) $Host_end = StringInStr ($data, $searchstring1_end, 0, 1, $Host_pos) ;print ($Host_pos & @tab & $Host_end & @tab & "Abstand: " & $Host_end - $Host_pos) $tmp = StringMid ($data, $Host_pos +stringlen ($ip_search), $Host_end - $Host_pos ) $tmp = StringReplace ($tmp, $searchstring1_end, "") $tmp = StringStripWS ($tmp, 3) $tmp = StringReplace ($tmp, '"' , "") ;print ("*" & $tmp & "*") $ip_adresse = $ip_adresse & $tmp & "|" Next if StringRight ($ip_adresse, 1) = "|" Then $ip_adresse = StringMid ($ip_adresse, 1, StringLen($ip_adresse) -1) EndIf EndIf EndIf $Host_pos = StringInStr ($data, $searchstring1) ;print ("POS:" & $Host_pos) if $Host_pos = 0 Then ;Error -1 wenn kein Aliasnamen definiert ist Return -1 EndIf $Host_end = StringInStr ($data, $searchstring1_end, 0,1,$Host_pos ) ;print ("END:" & $Host_end) $tmp = StringMid ($data, $Host_pos + StringLen ($searchstring1), $Host_end - $Host_pos ) $fqdn = StringReplace ($tmp, '"', "") ;Überflüssige Anführungszeichen entfernen $fqdn = StringReplace ($fqdn, ',' ,"") ;Überflüssige Beistriche entfernen $fqdn = StringStripCR ($fqdn) ;Alle @CR entfernen $fqdn = StringStripWS ($fqdn, 8) ;Alle überflüssigen Leerstellen entfernen Return ($fqdn & " " & $ip_adresse) EndFunc ;*************************************************************