Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VB Script ausführen wenn die IP sich ändert

Frage Entwicklung VB for Applications

Mitglied: L0c4lh0sT

L0c4lh0sT (Level 1) - Jetzt verbinden

09.04.2009, aktualisiert 09:04 Uhr, 5531 Aufrufe, 8 Kommentare

Guten Morgen,
so nachdem ich ja gestern mit godlie mein Script zum erfassen der Netzwerkumgebung gebastelt habe und es wunderbar funktioniert, kommt jetzt nochmal eine weitere Aufgabe, die ich alleine nicht zu lösen vermag.

Es geht darum, dass das Script von gestern immer ausgeführt werden soll wenn sich die IP Adresse ändert.

Frage ist nur: Wie bekomme ich raus ob sich die IP Adresse ändert? !und! wie kann ich das realisieren? Eine Dauerschleife würde sicher auf Kosten der Hardware bzw. Leistung gehen oder?

Die Programiersprache ist eigentlich egal aber VBS wäre von Vorteil. Es sollte nur ohne Benutzereingriffe und ohne Adminrechte startbar sein. Ebenfalls sollte keine bestimmt Umgebung dafür notwendig sein. Also soll es mit Windows Bordmitteln lauffähig sein.

Zeitlich gesteuert also über den Taskplaner beispielsweise ist nicht optimal da es dann zu unflexibel ist.

Hoffe mal ihr könnt mir da helfen.
Ich hab da sowiso nicht so die Ahnung von^^ Bin eher der Hardware-Mensch xD

Danke schonmal
L0c4lh0sT
Mitglied: bastla
09.04.2009 um 10:42 Uhr
Hallo L0c4lh0sT!
Eine Dauerschleife würde sicher auf Kosten der Hardware bzw. Leistung gehen oder?
Wenn Du die Wartezeit zwischen den einzelnen Checks per "WScript.Sleep Dauer in ms" überbrückst, sollte das kein Problem sein ...

Grüße
bastla
Bitte warten ..
Mitglied: L0c4lh0sT
09.04.2009 um 10:55 Uhr
Da haben wir dann aber wieder ne Abfrage die zu unflexibel ist weil sie eine Vordefinierte Zeit abläuft.

Gibt es da nicht soetwas wie ein Autorun oder Regeintrag der auf die Änderung der IP reagiert?
Ja ich weiß dafür ist es ein falsches Forum aber da ich selbst nicht weiß wie es zu realisieren ist...kann ja auch sein dass es mit VBS geht.


Mfg
L0c4lh0sT
Bitte warten ..
Mitglied: colinardo
09.04.2009 um 11:34 Uhr
Du kannst es mal mit folgendem Versuchen:
Das Script beobachtet den Registry-Key einer Netzwerkkarte und deren IP-Adresse, den musst du an deine Situtation anpassen.
Sobald sich dort der Key "IPAddress" ändert kommt es zu einem Event.

01.
Set wmiServices = GetObject("winmgmts:" _ 
02.
    & "{impersonationLevel=impersonate}!\\.\root\default") 
03.
 
04.
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")  
05.
  
06.
wmiServices.ExecNotificationQueryAsync wmiSink, _  
07.
    "SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' " & _ 
08.
        "AND KeyPath='SYSTEM\\CurrentControlSet\\Services\\{2716E6B8-A329-4C09-B502-CAA1A36604CF}\\Parameters\\Tcpip' AND ValueName='IPAddress'"  
09.
  
10.
  
11.
  
12.
WScript.Echo "Listening for Registry Change Events..." & vbCrLf  
13.
  
14.
While(1)  
15.
    WScript.Sleep 1000  
16.
Wend  
17.
  
18.
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)  
19.
'Beispiel ausgabe // hier kann dann dein Script aufgerufen werden 
20.
    WScript.Echo "Received Registry Change Event" & vbCrLf & _  
21.
        wmiObject.GetObjectText_()  
22.
End Sub
Bitte warten ..
Mitglied: L0c4lh0sT
09.04.2009 um 11:48 Uhr
Schonmal ein guter Ansatz aber leider auch nicht das richtige...
Das Script soll auf ca. 3000 Rechnern ausgeführt werden. Und da ich hier dann einen Eintrag aus der Registry nehmen müsste, der auf jedem Rechner anders ist geht es so auch nicht.

Hätte vll. vorher die anzahl der PC's erwähnen sollen sry

MfG
L0c4lh0sT
Bitte warten ..
Mitglied: godlie
09.04.2009 um 12:04 Uhr
Du hast interessante Aufgabenstellungen

Naja ich könnte mir denken das es evtl. über einen Service lösbar wäre.
Im Prinzip wäre das ein VBS Script welches nach der IP sieht diese speichert.
Beim nächsten Start wieder das gleiche macht, falls IP abweicht dann starte dies und das.

Ich glaube RunAsService könntest schon mal ins Auge fassen.

http://sourceforge.net/projects/runasservice/

Ob es einen EventTrigger für IP Adress Change gibt unter Windows glaube ich fast net.
Bitte warten ..
Mitglied: L0c4lh0sT
09.04.2009 um 13:44 Uhr
Noch besser wäre es wohl nurnoch nach event id 4201 zu gehen.

Gibt es da ne möglichkeit?
Genau das ist nämlich der Event den ich brauche.
Allerdings als Information nicht als Error oder sonstiges...

MfG
L0c4lh0ST
Bitte warten ..
Mitglied: colinardo
09.04.2009 um 14:02 Uhr
Zitat von L0c4lh0sT:
Noch besser wäre es wohl nurnoch nach event id 4201 zu gehen.

welche EventSource bzw. Quelle meinst du ? -- damit es eindeutig zugeordnet werden kann !
Dann muss das noch in die WQL Query mit eingebaut werden

01.
strComputer = "." 
02.
Set objWMIService = GetObject("winmgmts:" _ 
03.
    & "{impersonationLevel=impersonate, (Security)}!\\" & _ 
04.
        strComputer & "\root\cimv2") 
05.
 
06.
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _     
07.
    ("Select * from __instancecreationevent where " _ 
08.
        & "TargetInstance isa 'Win32_NTLogEvent' " _ 
09.
            & "and TargetInstance.EventCode = '4201' ") 
10.
 
11.
Do 
12.
    Set objLatestEvent = colMonitoredEvents.NextEvent 
13.
     WScript.Echo objLatestEvent.TargetInstance.SourceName 
14.
Loop
Bitte warten ..
Mitglied: L0c4lh0sT
05.05.2009 um 08:40 Uhr
Wow das hat super geklappt! Bin wirklich begeistert!

Jetzt muss ich nur noch mein anderes Script einbinden! Wunderbar!
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte
Festplatten, SSD, Raid
PC stellt nach dem Bios ab (20)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Server-Hardware
Einem Stromausfall entgegen wirken (19)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server-Hardware ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...

Microsoft Office
gelöst VBA Excel Problem mit UserForm, ListBox und TextBox (12)

Frage von abuelito zum Thema Microsoft Office ...