Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

If else kaskadieren und Netzverkverbindung prüfen

Mitglied: traller

traller (Level 1) - Jetzt verbinden

29.05.2012, aktualisiert 13:53 Uhr, 4011 Aufrufe, 12 Kommentare

Hallo,
ich möchte mit if / else prüfen, ob ein Computer über das Kabelnetzwerk (XYZ) verbunden ist und nicht über W-Lan (ABC). Beide Netzwerkverbindungen sind im gleichen IP-Netzwerk somit fällt ein Test mittels Ping weg.
Es muss eigentlich nur geprüft werden, ob die Netzwerkverbindung mit der Bezeichnung XYZ verbunden ist oder nicht. Sonst Abbruch.
Wenn diese Prüfung erfolgreich ist, soll dann noch geprüft werden, ob XYZ mit der Geschwindigkeit von 1Gbit/s verbunden ist, sonst Abbruch.
Wenn diese Prüfung erfolgreich ist, noch einmal Prüfen ob ABC nicht verbunden ist, dann rufe Script test.cmd auf, sonst Abbruch.

Kann mir da jemand auf die Sprünge helfen wie ich das prüfe und kann ich if / else so kaskadieren in einer Batch?
bd2006d246444cd56153cbdc2093a3ad - Klicke auf das Bild, um es zu vergrößern

Betriebssystem: Windows 7
Mitglied: rubberman
29.05.2012 um 19:38 Uhr
Hallo traller!

Erst mal musst du die nötigen Infos sammeln. Diese dann mit IF Statements zu verwursten ist vermutlich kein Problem.

Nun bin ich leider kein "Networker", darum müsstest du etwas mithelfen.
Ich habe 2 WMIC Kommandozeilen, mit denen du vermutlich diese Informationen bekommst:
1.
01.
WMIC /Node:"%computername%" /Output:STDOUT Path Win32_NetworkAdapterConfiguration Get /Format:LIST
2.
01.
WMIC /Node:"%computername%" /Output:STDOUT Path Win32_NetworkAdapter Get /Format:LIST
Das Get könnte man nun noch konkretisieren und ein Where ergänzen, um das auszufiltern was tatsächlich benötigt wird.

- Kommen die benötigten Informationen? Wenn ja, über welche Eigenschaften?
- Benötigst du beide Kommandozeilen? Wenn ja, welche Eigenschaft in den beiden Ausgaben ist dazu geeignet, um eine eindeutige Zuordnung zu bekommen?

Grüße
rubberman
Bitte warten ..
Mitglied: traller
29.05.2012, aktualisiert um 20:14 Uhr
Hallo,
mit deinem ersten Befehl kam unleserlicher Kram, den ich nicht zu ordnen konnte. Bei dem zweiten kam:
Kabelnetzwerk (verbunden):
01.
NetConnectionStatus=2
Kabelnetzwerk (getrennt):
01.
NetConnectionStatus=7
Geschwindigkeit Kabelnetz (100Mbit/s):
01.
Speed=100000000
Geschwindigkeit Kabelnetz (1Gbit/s):
01.
Speed=1000000000
Wobei da natürlich mehrere Adapter genannt werden. Nun könnte man doch eventuell sagen: Suche nach Zeile "MACAddress=00:21:70:BE:9F:0E" oder Suche nach Zeile "NetConnectionID=LAN-Verbindung". Nun gehe x Zeilen darunter und prüfe ob dieser Wert = y ist.


Die Gesamtausgabe des entsprechenden Kabeladapter ist:
01.
AdapterType=Ethernet 802.3 
02.
AdapterTypeId=0 
03.
AutoSense= 
04.
Availability=3 
05.
Caption=[00000009] GEHEIM 
06.
ConfigManagerErrorCode=0 
07.
ConfigManagerUserConfig=FALSE 
08.
CreationClassName=Win32_NetworkAdapter 
09.
Description=GEHEIM 
10.
DeviceID=9 
11.
ErrorCleared= 
12.
ErrorDescription= 
13.
GUID={GEHEIM} 
14.
Index=9 
15.
InstallDate= 
16.
Installed=TRUE 
17.
InterfaceIndex=11 
18.
LastErrorCode= 
19.
MACAddress=GEHEIM 
20.
Manufacturer=GEHEIM 
21.
MaxNumberControlled=0 
22.
MaxSpeed= 
23.
Name=GEHEIM 
24.
NetConnectionID=LAN-Verbindung 
25.
NetConnectionStatus=2 
26.
NetEnabled=TRUE 
27.
NetworkAddresses= 
28.
PermanentAddress= 
29.
PhysicalAdapter=TRUE 
30.
PNPDeviceID=GEHEIM 
31.
PowerManagementCapabilities= 
32.
PowerManagementSupported=FALSE 
33.
ProductName=GEHEIM 
34.
ServiceName=GEHEIM 
35.
Speed=1000000000 
36.
Status= 
37.
StatusInfo= 
38.
SystemCreationClassName=Win32_ComputerSystem 
39.
SystemName=GEHEIM 
40.
TimeOfLastReset=GEHEIM
Bitte warten ..
Mitglied: bastla
29.05.2012, aktualisiert um 20:52 Uhr
Hallo traller und rubberman!
Nun könnte man doch eventuell sagen: Suche nach Zeile ...
... oder etwas integriertes VBScript den Job machen lassen - ungetestet:
01.
set "G=%temp%\GetInfo.vbs" 
02.
>"%G%" echo For Each objItem In GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapter Where NetConnectionID='LAN-Verbindung'"):WScript.Echo objItem.NetConnectionStatus^&"_"^&objItem.Speed:Next 
03.
for /f %%i in ('cscript //nologo "%G%"') do set "Info=%%i" 
04.
if "%Info%" neq "2_1000000000" echo Voraussetzungen nicht erfuellt! & goto :eof 
05.
echo Mit 1 GBit verbunden
Nebeneffekt: Es werden keine Admin-Rechte benötigt ...

Grüße
bastla
Bitte warten ..
Mitglied: traller
29.05.2012 um 21:11 Uhr
wie würde das denn ohne VBScript gehen? Admin-Rechte werden eh für den Job benötigt ...
Bitte warten ..
Mitglied: rubberman
29.05.2012 um 21:24 Uhr
Hallo traller, hallo bastla!

Zitat von traller:
Nun gehe x Zeilen darunter und prüfe ob dieser Wert = y ist.


x Zeilen darunter ist nicht notwendig, dafür gibt es Where. Aber welcher Wert soll denn "y" sein?

@bastla
Ich bekomme auch mit WMIC keinen UAC Prompt, falls du darauf hinaus willst. Allerdings gehöre ich auf meiner Kiste zu den lokalen Admins

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
29.05.2012 um 21:30 Uhr
Hallo traller!

Was spricht gegen VBS?

Per "wmic" kannst Du das so versuchen:
for /f "tokens=2 delims==" %%i in ('wmic NIC Where NetConnectionID^="LAN-Verbindung" get NetConnectionStatus /value') do set "NCS=%%i"
Danach hast Du in der Variabeln %NCS% den zurückgegebenen Wert und kannst ihn per "if" abfragen ...

Grüße
bastla
Bitte warten ..
Mitglied: traller
29.05.2012, aktualisiert um 21:46 Uhr
@rubberman
y = der Wert, der überprüft werden soll, kannste aber auch vergessen ...

@bastla
sieht gut aus, werde ich gleich oder morgen mal testen und berichten. was hat es mit dem "token" auf sich?
Bitte warten ..
Mitglied: Biber
29.05.2012 um 21:44 Uhr
[OT]
Zitat von bastla:
Hallo traller!
Was spricht gegen VBS?
[_] Das oben stehende VBS lässt sich nicht durch Entfernen der Kommentarzeilen geschwindigkeitsoptimieren
[_] Wenn ich dieses unappetitliche Gestrunkele mit in die Wohnung rein bringe, dann gibt es abba Schimpfe
[_] Es deprimiert mich immer, 5 Zeilen zu sehen und nach der ersten halben macht es bei mir *TILT* *TILT* *TILT*

Bin gespannt, was er ankreuzt....

SCNR
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
29.05.2012 um 21:53 Uhr
Hallo traller!
was hat es mit dem "token" auf sich?
Tutorial zur FOR-Schleife

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
29.05.2012, aktualisiert um 22:03 Uhr
Hallo zusammen.

Mit mehreren Bedingungen ggf. so:
01.
for /f "delims=" %%i in ('WMIC /Node:"%computername%" /Output:STDOUT Path Win32_NetworkAdapter Where "NetConnectionID='LAN-Verbindung' And NetConnectionStatus='2'" Get Speed /FORMAT:List^|findstr .') do set "%%i" 
02.
echo %Speed%
Das FINDSTR ist da, um die Unicodeausgabe in ein verstümmeltes ASCII zu konvertieren. Das ist der eigentliche Nachteil von WMIC gegenüber der VBS Lösung.

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
29.05.2012 um 22:01 Uhr
[OT] @Biber
Wer so schöne flow-charts malt, kann eigentlich nur Antwort 2 wählen (so denn überhaupt noch eine Reaktion auf die Frage kommt) ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: traller
30.05.2012 um 16:39 Uhr
@bastla:
funktioniert damit wunder bar. Dann noch die If/Else verschachtelt und es geht so wie ich wollte. Danke an alle, die mit geholfen haben.
Bitte warten ..
Ähnliche Inhalte
LAN, WAN, Wireless
3 Switch - kaskadieren oder nicht?
Frage von gilldexLAN, WAN, Wireless6 Kommentare

Hallo zusammen Im Moment habe ich in einem Netzwerksegment 2 HP 2610-48 Switch in einem Kasten welche über einen ...

Batch & Shell
If Else mit Verschachtelung
gelöst Frage von soritoseBatch & Shell5 Kommentare

hallo ich versuche gerade eine suche zu schreiben mit einigen IF leider bekomme ich immer nur ein Syntaxfehler und ...

Batch & Shell
Hilfe bei einer Batch mit If und Else
gelöst Frage von zeroblue2005Batch & Shell5 Kommentare

Hallo Zusammen, da ich nicht der große Batchprogrammierer bin, die Frage, kann mir jemand helfen bei folgender Batch? if ...

Batch & Shell
Batch vergleich Dateien if else
Frage von zeroblue2005Batch & Shell2 Kommentare

Hallo Zusammen, suche eine einfache Lösung um zwei Dateien miteinander zu vergleichen. Hintergrund ist der, dass ich eine Update ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 2 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 7 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
Frage von a-za-zNetzwerkmanagement16 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
Frage von Thomas2Windows Server7 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...