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

LAN -Status mit vbs überprüfung (Server - Client)

Frage Entwicklung VB for Applications

Mitglied: Silencer1982

Silencer1982 (Level 1) - Jetzt verbinden

08.02.2008, aktualisiert 19.02.2008, 8315 Aufrufe, 9 Kommentare

Hallo,
möchte gerne einen Script schreiben der mir anzeigt ab wann mein Server im Lan verfügbar ist.

Der Hintergrund ist , da ich meinen Server beim einschalten meines Pc´s über Wake on Lan wecke - möchte ich gerne eine Grafische Meldung ab wann er dann auch erreichbar ist ( bezw. hochgefahren ist) .

Leider bin ich noch Anfänger im bereich VBs .
Wie könnte so ein script aussehen?
Mitglied: Tunerus
08.02.2008 um 13:06 Uhr
Ich hab leider gerade meine Unterlagen nicht hier aber vorab schon mal ein kleiner tipp:

Nimm ein Shellobjekt mit dem Du einen Ping absendest an den Server. Die Ping.exe liefert einen Rückgabewert zurück welchen Du prüfst ob er einen bestimmten Status hat. Wenn dieser stimmt eine Messagebox erscheinen lassen ansonsten die Überprüfung nochmal laufen lassen.

Heute Abend kann ich Beispielcode liefern.
Bitte warten ..
Mitglied: SvenGuenter
08.02.2008 um 17:52 Uhr
Hi hier eine mögliche Lösung

01.
Option Explicit 
02.
 
03.
 
04.
 
05.
Private Type WSAdata 
06.
   wVersion As Integer 
07.
   wHighVersion As Integer 
08.
   szDescription(0 To 255) As Byte 
09.
   szSystemStatus(0 To 128) As Byte 
10.
   iMaxSockets As Integer 
11.
   iMaxUdpDg As Integer 
12.
   lpVendorInfo As Long 
13.
End Type 
14.
 
15.
Private Type Hostent 
16.
   h_name As Long 
17.
   h_aliases As Long 
18.
   h_addrtype As Integer 
19.
   h_length As Integer 
20.
   h_addr_list As Long 
21.
End Type 
22.
 
23.
Private Type IP_OPTION_INFORMATION 
24.
   TTL As Byte 
25.
   Tos As Byte 
26.
   Flags As Byte 
27.
   OptionsSize As Long 
28.
   OptionsData As String * 128 
29.
End Type 
30.
 
31.
Private Type IP_ECHO_REPLY 
32.
   Address(0 To 3) As Byte 
33.
   Status As Long 
34.
   RoundTripTime As Long 
35.
   DataSize As Integer 
36.
   Reserved As Integer 
37.
   data As Long 
38.
   Options As IP_OPTION_INFORMATION 
39.
End Type 
40.
 
41.
Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal Hostname As String) As Long 
42.
Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAdata As WSAdata) As Long 
43.
Private Declare Function WSACleanup Lib "wsock32.dll" () As Long 
44.
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) 
45.
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long 
46.
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean 
47.
Private Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean 
48.
 
49.
Private Const SOCKET_ERROR = 0 
50.
 
51.
'Server ist die URL die Funktion liefert eine 1 wenn ping durchkommt und eine 0 wenn er nicht 
52.
'erreichbar ist 
53.
Public Function Ping(ByVal Server As String) As Long 
54.
 
55.
   Dim hFile As Long, lpWSAdata As WSAdata 
56.
   Dim hHostent As Hostent, AddrList As Long 
57.
   Dim Address As Long, rIP As String 
58.
   Dim OptInfo As IP_OPTION_INFORMATION 
59.
   Dim EchoReply As IP_ECHO_REPLY 
60.
   Dim Hostname As String 
61.
 
62.
 
63.
   Ping = 0 'Rückgabe anfangs auf null setzen 
64.
   If Left(Server, 7) = "http://" Then Server = Mid(Server, 8) 'http:// entfernen 
65.
 
66.
   Call WSAStartup(&H101, lpWSAdata) 
67.
 
68.
   If GetHostByName(Server + String(64 - Len(Server), 0)) <> SOCKET_ERROR Then 
69.
      CopyMemory hHostent.h_name, ByVal GetHostByName(Server + String(64 - Len(Server), 0)), Len(hHostent) 
70.
      CopyMemory AddrList, ByVal hHostent.h_addr_list, 4 
71.
      CopyMemory Address, ByVal AddrList, 4 
72.
   End If 
73.
 
74.
   hFile = IcmpCreateFile() 
75.
   If hFile = 0 Then Exit Function 'Bei Fehler abbrechen 
76.
 
77.
   OptInfo.TTL = 128 
78.
 
79.
   'Ping senden 
80.
   If IcmpSendEcho(hFile, Address, String(32, "A"), 32, OptInfo, EchoReply, Len(EchoReply) + 8, 2000) Then 
81.
      rIP = CStr(EchoReply.Address(0)) + "." + CStr(EchoReply.Address(1)) + "." + CStr(EchoReply.Address(2)) + "." + CStr(EchoReply.Address(3)) 
82.
   Else 
83.
      'Fehler aufgetreten 
84.
 
85.
      Exit Function 
86.
   End If 
87.
 
88.
   If EchoReply.Status = 0 Then 
89.
   
90.
      Ping = 1 
91.
   Else 
92.
  
93.
      Ping = 0 
94.
   End If 
95.
    
96.
End Function 
97.
 
98.
 
Bitte warten ..
Mitglied: 60730
08.02.2008 um 17:53 Uhr
moin,

die Idee mit dem Ping "bringt" nicht wirklich viel, denn die Netzwerkkarte antwortet schon kurz nach dem Starten, zu dem Zeitpunkt muß SMB oder was auch immer, der Server "serviert" noch garnicht laufen...

Was willst Du denn überprüfen?

Wenn sowas wie Netzwerklaufwerke, dann evtl. so:

Achtung, kein VBS - nur eine .cmd /bat

:start
net use z: \\servername\c$
if exist z:\>nul goto ready
goto start
:ready
echo time/t
echo Server aktiv
net use z: /delete
pause
Bitte warten ..
Mitglied: Tunerus
08.02.2008 um 17:56 Uhr
So ich hab grad mal kurz etwas zusammen gebastelt und natürlich könnte man es noch verbessern ;)

01.
sComputername = "localhost" 'Hier den Servernamen eintragen 
02.
 
03.
Set oShell = WScript.CreateObject("WScript.Shell") 
04.
iErgebnis = oShell.Run("ping.exe -n 1 " & sComputername, 0, true) 
05.
 
06.
Do while (iErgebnis <> 0) 
07.
	Wscript.Sleep(1000) 
08.
	iErgebnis = oShell.Run("ping.exe -n 1 " & sComputername, , true) 
09.
Loop 
10.
	MsgBox "Computer ist online.", vbInformation, "Hinweis"
Ich hoffe es hilft Dir!
Bitte warten ..
Mitglied: SvenGuenter
08.02.2008 um 17:56 Uhr
Du kannst in dem Ping einen Delay einbauen damit du sicher bist das der Server wenn er denn oben ist auch erreichbar ist ;o)
Bitte warten ..
Mitglied: bastla
09.02.2008 um 23:21 Uhr
Hallo Silencer1982!

Wenn das Script auf einem System (solltest Du beim nächsten Mal angeben) ab XP ausgeführt wird, kannst Du (nach einer hier zu findenden Vorlage) auch eine Lösung ohne den CMD-Ping-Befehl verwenden:
01.
Server = "Servername" 'oder auch IP 
02.
 
03.
Start = Now 
04.
Do Until Ping(Server) 
05.
	WScript.Sleep 1000 
06.
Loop 
07.
Ende = Now 
08.
 
09.
WScript.Echo "Script gestartet um:    " & Start & vbCrLF & _ 
10.
	"Server erreichbar um: " & Ende & vbCrLF & vbCrLF & _ 
11.
	"Dauer: " & DateDiff("s", Start, Ende) & " Sekunden" 
12.
 
13.
 
14.
Function Ping(machine) 
15.
PingResult = True 
16.
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._ 
17.
	ExecQuery("select * from Win32_PingStatus where address = '"_ 
18.
	& machine & "'") 
19.
For Each objStatus in objPing 
20.
	If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then  
21.
		PingResult = False 
22.
	End If 
23.
Next 
24.
Ping = PingResult 
25.
End Function
@SvenGuenter: Dein Code passt nicht so wirklich unter die Überschrift VBS ...

Grüße
bastla
Bitte warten ..
Mitglied: Silencer1982
11.02.2008 um 10:03 Uhr
xp- klar das habe ich vergessen.
danke nochmal
Gruß Silencer1982
Bitte warten ..
Mitglied: 60730
11.02.2008 um 10:51 Uhr
Der Hintergrund ist , da ich meinen Server
beim einschalten meines Pc´s über
Wake on Lan wecke - möchte ich gerne
eine Grafische Meldung ab wann er dann auch
erreichbar ist ( bezw. hochgefahren ist) .

Moin,

eure Ideen sind ja alle nicht schlecht, aber wie ich bereits geschrieben habe (und jetzt mal ausführlicher beschreibe) - an der Situation, dass der NIC bereits kurz (bei mir 5 sec.) nach dem WOL auf Pings antwortet, und NICHT der Server ändert sich immer noch nichts ;-(

Um den "Serverstatus" selber herauszufinden, reicht also kein "Ping" - denn wie oben beschrieben, darauf antwortet bereits der NIC, während des bootens.

(WOL ist ja auch dafür gedacht, Betriebsysteme per RIS zu installieren, also "muß" nicht zwingend ein OS laufen, um die "Maschenka" anpingen zu können)

@SilenceR - nochmal die Frage, was für Dienste willst du abfragen?
Bitte warten ..
Mitglied: Silencer1982
19.02.2008 um 14:29 Uhr
Also erstmal danke an alle!!!

Im grunde genommen soll mir das Script nur sagen das der Server aufgeweckt wurde.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Netzwerk
Microsoft-Software-Compliance-Status (Lizenz Überprüfung durch MS) (2)

Frage von JULIUSCC zum Thema Windows Netzwerk ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows 7
Wsus client findet am wsus server nicht alle updates (3)

Frage von endurance zum Thema Windows 7 ...

LAN, WAN, Wireless
Client Mode oder Bridge Mode bei Anbindung an einen AP per W Lan (3)

Frage von xpstress zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

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