PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vbScript ... Warum funzt das bloß nicht?


Kai
2003-03-29, 13:44:56
Was läuft denn nur bei diesem Script falsch? Der Hintergrund dazu: http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=62633

Das Problem: Zwar wird Outlook Express gestartet, der Betreff besagt dann: "Bernds IP Adresse am (datum)", aber im Textfeld steht nichts, die IP wird offensichtlich doch nicht ausgelesen. Sie soll zuerst per ipconfig ermittelt werden, dann in einer .txt-Datei abgespeichert und von Outlook ausgelesen werden. Kann jemand den Fehler finden? Oder funktioniert das .vbs bei euch sogar?


Sub SendIP()
Dim WshShell, fso, IpDatei, ip, f
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Const TemporaryFolder = 2
WshShell.Run "cmd /c ipconfig >%temp%\ip.txt", 7, TRUE
Set f = fso.GetSpecialFolder(TemporaryFolder)
Set IpDatei = fso.OpenTextFile(fso.GetAbsolutePathName(f) & "\ip.txt")
Do While IPDatei.AtEndOfStream <> True
ip = IpDatei.ReadLine
If InStr(ip, "PPP-Adapter") > 0 Then Exit Do
Loop
Do While IPDatei.AtEndOfStream <> True
ip = IpDatei.ReadLine
If InStr(ip, "IP-Adresse") > 0 Then Exit Do
Loop
IpDatei.Close
If Len(ip) <= 7 Then
MsgBox "IP-Adresse für PPP-Adapter ist nicht vorhanden," & _
vbCrLf & "Verbindung prüfen!", vbCritical
Exit Sub
End If
ip = Trim(ip)
ip = Right(ip, Len(ip)-36)
ip = Trim(ip)
WshShell.Run("mailto:?subject=Bernds%20IP-Adresse%20am%3A%20" & Date & _
"%20" & Time & "&body=Url%3Ato%3A" & ip)
End Sub
SendIP()


edit: Code-Tags eingefügt.

Xanthomryr
2003-03-29, 14:03:54
Hmm, das Script liest bei mir die IP vom Gateway(Router) aus und nicht die von meinem Rechner.

Kai
2003-03-29, 14:05:34
Originally posted by Grendel
Hmm, das Script liest bei mir die IP vom Gateway(Router) aus und nicht die von meinem Rechner.

Hmm, ist aber nicht beabsichtigt ... aber es liest sie aus, oder?

Xanthomryr
2003-03-29, 14:08:46
Ja. list die IP die ich unter Standardgateway eingetragen habe aus und zeigt sie im Outlook Textfeld an.

Kai
2003-04-06, 00:54:25
Originally posted by Grendel
Ja. list die IP die ich unter Standardgateway eingetragen habe aus und zeigt sie im Outlook Textfeld an.

Konnte ich nach zwischenschalten eines Routers bestätigen. Hab aber keinen Schimmer wie er die richtige IP anzeigen könnte ... Grübel.

Dr.Doom
2003-04-06, 04:04:35
Hmm, ich hab nichtmal einen PPP-Adapter in der "ipconfig"-Auflistung. Ist das was DSL-spezifisches !?

Sephiroth
2004-06-07, 17:21:35
*leiche ausbuddel*

Meiner einer steht jetz auch vor dem gleichen Problem wie damals Du Kai.
Nunja, ich hab mal meine wenigen VB Script Kenntnisse genutzt und zunächst folgendes Grundgerüst als VB Script gebastelt.

Computer = "."

set objWMIService = GetObject("winmgmts:\\" & Computer & "/root/cimv2")
set colAdapter = objWMIService.InstancesOf("Win32_NetworkAdapterConfiguration")
Set WSHShell = WScript.CreateObject("WScript.Shell")

WScript.Echo "Name und IP aller Netzwerk Adapter"
For Each objAdapter In colAdapter
IF IsArray(objAdapter.IPAddress) THEN
ip = objAdapter.IPAddress(0)
ELSEIF IsNull(objAdapter.IPAddress) THEN
ip = "keine"
ELSE
ip = objAdapter.IPAddress
END IF
WScript.Echo "Description: " & objAdapter.Description & " IP: " & ip
Next

Dieses Script liest alle Netzwerkadapter aus, gibt ihren Namen und deren IP Adresse an.
Beispiel einer solchen Ausgabe mit cscript.exe(also DOS Fenster statt Dialogbox):

Name und IP aller Netzwerk Adapter
Description: Asynchroner RAS-Adapter IP: keine
Description: WAN-Miniport (L2TP) IP: keine
Description: WAN-Miniport (PPTP) IP: keine
Description: WAN-Miniport (PPPOE) IP: keine
Description: Parallelanschluss (direkt) IP: keine
Description: WAN-Miniport (IP) IP: keine
Description: Paketplaner-Miniport IP: keine
Description: ASUSTeK/Broadcom 440x 10/100 Integrated Controller IP: keine
Description: Paketplaner-Miniport IP: keine
Description: NIC1394 IP: 192.168.0.2


Daraus läßt sich nun dein obiges Script verbessern und lediglich die IP des "WAN (PPP/SLIP) Interface" ausgeben(der PPP Adapter der DFÜ verbindung). Bei anderen verwendeten Adaptern wie die AVM Adapter der Fritz!Cards muß man das eben entsprechend individuell anpassen oder man baut eine entsprechende Überprüfung mit in das Script ein.

Sephiroth
2004-06-08, 17:56:25
Diese neue Variante ließt jetz nur die IPs der Adapter aus, die auch tatsächlich eine IP-Adresse haben!
Werden dann i.R. nur ein bis zwei Adapter sein.

Computer = "."
DIM WSHShell, FSO
SET objWMIService = GetObject("winmgmts:\\" & Computer & "/root/cimv2")
SET colAdapter = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
'so werden nur die Netzwerkadapter ausgewählt, die auch tatsächlich eine IP haben.
SET WSHShell = WScript.CreateObject("WScript.Shell")
SET FSO = CreateObject("Scripting.FileSystemObject")

SUB GetIP()
For Each objAdapter In colAdapter
ip = objAdapter.IPAddress(0)
WScript.Echo "Description: " & objAdapter.Description & " IP: " & ip
Next
END SUB

GetIP()

z.Z. versuch ich es hinzubekommen mir ein Logfile als HTML Seite mittels Script zu schreiben. Stehe jedoch vor dem Problem, daß ich nur Zeilen an die bestehende Datei anhängen kann oder sie komplett überschreiben muß. Ich würde gerne bis auf 2 Zeilen vor dem Ende der Datei "springen" und dort die neue Zeile einfügen, doch das geht leider nicht(sonst würde die neue Zeile ja nach den letzten HTML Tags stehen). :(
Mal sehen wie ich das hinbekomme ...