Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: Wincc: IP-Adresse ermitteln, oder backticks

  1. #1
    Registriert seit
    14.11.2008
    Beiträge
    66
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    eine WinCC-Runtime soll (vorzugsweise) die IP-Adresse des PCs ermitteln, auf dem sie läuft. Alternativ auch eine MAC-Adresse, oder sonst ein eindeutiges Merkmal.

    Meine erste Idee wäre, ipconfig zu starten. Da kenne ich aber keine Möglichkeit, die Ausgabe von ipconfig zurückzugewinnen (wie es mit Computer-Skriptsprachen möglich ist).

    Kennt hier jemand eine Lösung dafür? IP-Adresse ermitteln oder Ausgabe eines Systembefehls einlesen, möglichst ohne temporäre Dateien?

    Vielen Dank
    Zitieren Zitieren Wincc: IP-Adresse ermitteln, oder backticks  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.617
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Dies habe ich auf Microsoft Tech Net gefunden.
    Muss natürlich für WinCC Flexible etwas angepasset werden:

    Code:
    Option ExplicitDim objFSO, wshShell, textFile
    Dim outfile
    Dim hostNames, hostName, wmi, results, result
    
    
    On Error Resume Next 
    
    
      Set objFSO  = CreateObject("Scripting.FileSystemObject") 
      Set wshShell = wscript.createObject("wscript.shell") 
      Set textFile = objFSO.OpenTextFile("Computers.txt") 
    
    
      hostNames  = Split(textFile.ReadAll, vbNewLine) 
    
    
      textFile.Close
    
    
      set outfile = objFSO.OpenTextFile("output.txt",2,true)
      For Each hostName In hostNames
       Do
         Set wmi   = GetObject("winmgmts:\\" & hostName & "\root\CIMV2") 
         Set results = wmi.ExecQuery("Select * From Win32_NetworkAdapterConfiguration",,48)
         If Err.Number <> 0 Then
          MsgBox hostName & ". Error " & Err.Number & " (Hex " & Hex(Err.Number) & "). " & Err.Description, vbCritical
          Exit Do
         End If
    
    
         For Each result in results 
          If Not isNull(result.DNSHostName) Then 
            outfile.writeline "DNS Host Name: "& result.DNSHostName 
            outfile.writeline "Description: "  & result.Description
            outfile.writeline "IP Address: "   & Join(result.IPAddress, ",")
            outfile.writeline "Default Gateway: "   & Join(result.DefaultIPgateway, ",")
            outfile.writeline "IP Subnet: "    & Join(result.IPSubnet, ",")
            outfile.writeline "DNS Server Search Order: " & Join(result.DNSServerSearchOrder, " , ")
          End If 
         Next
    
    
       Loop Until True
      Next
    
    
    On Error Goto 0
    OBS. Wegen Wscript.shell werden alle andere VBS Skripte angehalten wenn diese Skript läuft !!
    Jesper M. Pedersen

  3. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    Drutbluck (21.11.2013)

  4. #3
    Registriert seit
    14.11.2008
    Beiträge
    66
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Danke, das sieht sehr gut aus. (Muss nur noch funktionieren)

    Die möglichen/zulässigen Hostnames können aus Projektdaten ermittelt werden.

    der hier hilfreiche Teil des Codes:

    Zitat Zitat von JesperMP Beitrag anzeigen
    Code:
      For Each hostName In hostNames
       Do
         Set wmi   = GetObject("winmgmts:\\" & hostName & "\root\CIMV2") 
         Set results = wmi.ExecQuery("Select * From Win32_NetworkAdapterConfiguration",,48)
         If Err.Number <> 0 Then
          ' gilt nicht
         End If
    
    
         For Each result in results 
          If Not isNull(result.DNSHostName) Then 
            outfile.writeline "DNS Host Name: "& result.DNSHostName 
            outfile.writeline "Description: "  & result.Description
            outfile.writeline "IP Address: "   & Join(result.IPAddress, ",")
            outfile.writeline "Default Gateway: "   & Join(result.DefaultIPgateway, ",")
            outfile.writeline "IP Subnet: "    & Join(result.IPSubnet, ",")
            outfile.writeline "DNS Server Search Order: " & Join(result.DNSServerSearchOrder, " , ")
          End If 
         Next
    
    
       Loop Until True
      Next
    OBS. Wegen Wscript.shell werden alle andere VBS Skripte angehalten wenn diese Skript läuft !!
    Dann darf es nur 1x beim Start laufen.

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ändert der Host-PC auf dem die Runtime läuft oft seine IP-Adresse?
    Alternativ könnte die IP-Adresse auch fest im Projekt in einer Variable oder in einer Datei gespeichert werden.

    Um welche WinCC-Version geht es genau? Welches Host-Betriebssystem?

    [Nachtrag]
    Wenn ich mehrere WinCCflexible Panels mit identischem Projekt verwende, dann speichere ich einmalig eine ini/txt-Datei mit eindeutiger Stationsbezeichnung auf dem Panel. Diese Datei lese ich beim Runtime-Start.

    Harald
    Geändert von PN/DP (21.11.2013 um 16:05 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von Drutbluck Beitrag anzeigen
    eine WinCC-Runtime soll (vorzugsweise) die IP-Adresse des PCs ermitteln, auf dem sie läuft. Alternativ auch eine MAC-Adresse, oder sonst ein eindeutiges Merkmal.
    Zitat Zitat von PN/DP Beitrag anzeigen
    Ändert der Host-PC auf dem die Runtime läuft oft seine IP-Adresse?
    Alternativ könnte die IP-Adresse auch fest im Projekt in einer Variable oder in einer Datei gespeichert werden.
    Ich vermute es geht um einen WinCC-Kopierschutz...

  7. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    ... in der Hoffnung, daß derjenige, welcher den Schutz knacken will, noch weniger Ahnung hat als derjenige, der den Kopierschutz einbaut?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #7
    Registriert seit
    14.11.2008
    Beiträge
    66
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Es geht darum, dass es mehrere HMIs gibt, die sich nur geringfügig unterschiedlich verhalten sollen. Bisher wurden dafür immer entsprechend viele Kopien angelegt. Ich suche bei Gelegenheit einen Weg, das rückgängig zu machen.

  9. #8
    Registriert seit
    29.10.2010
    Beiträge
    32
    Danke
    1
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie wäre es denn mit der Auswertung des Rechnernamens? Der steht im System-Tag @LocalMachineName.

Ähnliche Themen

  1. Adresse von Formaloperanden ermitteln
    Von Katzi im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 21.11.2013, 16:11
  2. IP Adresse über HMI Skript ermitteln
    Von Contor im Forum HMI
    Antworten: 11
    Letzter Beitrag: 20.03.2012, 11:40
  3. DB Adresse ermitteln
    Von Marc_Quark im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 22.10.2009, 08:22
  4. Adresse eines Merkers am FB ermitteln
    Von RAN im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.10.2007, 13:48
  5. Adresse im Instanzdatenbaustein ermitteln
    Von hubiwahn im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.09.2006, 16:14

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •