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

Werte aus IP-Config als Variable setzen?

Frage Entwicklung Batch & Shell

Mitglied: BrotoX

BrotoX (Level 1) - Jetzt verbinden

08.11.2006, aktualisiert 20.11.2006, 8055 Aufrufe, 32 Kommentare

ipconfig -> ip filtern -> ip bzw. ganze zeile als variable speichern . . .

Moin Leute!

Ich hab auf der Arbeit das Problem das die Datenbank mit den IP's vorne und hinten nicht stimmt.

Ich habe nun eine Batch-routine geschrieben die ich in das Novell-Anmeldescript mit integriert habe.

Diese Speichert automatisch bei jeder anmeldung die ipconfig in einer .txt mit entsprechendem usernamen . . .

Aber was ist mit den leuten die mehrere Rechner haben? Sie haben mehrere IP's aber nur einen Usernamen . . .

Ich brauche nun die IP-Adresse als variable . . . wie setze ich diese?

Hier die Batch . . .
@echo off

if exist ip%NWUSERNAME%.txt goto jump
goto ip

:ip
ipconfig /all > \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt

:jump

--> Hier brauch ich hilfe . . . wie setze ich die werte als Variable ??? <------
set var1=ipconfig /all | find /i "ip-adresse"
set var2=find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"


if %var1%==%var2%
goto jump2

if not ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt

:jump2

Ich würde mich sehr Freuen wenn mir jemand helfen könnte!

Danke im voraus!!!

Mit freundlichen Grüßen

BrotoX
32 Antworten
Mitglied: Biber
08.11.2006 um 11:43 Uhr
Tut mir Leid, BrotoX,

wenn Dein Problem mit Batch lösbar wäre, dann würde ja eine Forumssuche nach "ipconfig Batch" über 1200 Threads und über 6000 Kommentare liefern.

Aber anscheinend betrittst Du völliges Neuland mit Deiner Anforderung...

Vielleicht geht es später mal mit der Vista PowerShell 3.0?

Bedauernd
Biber
Bitte warten ..
Mitglied: Dani
08.11.2006 um 11:47 Uhr
Hi,
willst du wirklich alles (was ipconfig /all) speichern?! Sprich brauchst du nur die IP oder den Rest auch?!


Gruß
Dani
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 12:14 Uhr
Also, Ich speichere bereits alles was in der ipconfig /all steht in einer Textdatei die den namen ip%NWUSERNAME%.txt hat . . . und ich bekomme auch aus der ipconfig den wert den ich haben will . . . aber ich weiß nicht wie ich in zu einer variable setze . . . . .. und ja ich brauche den rest auch . . . aber ich brauche die ip als variable damit ich sie mit der ip die in der textdatei ist und der ip mit der der user reingeht vergleichen kann . .. damit ich die mitarbeiter erfassen kann die 2 oder mehr pcs haben . . .

Aber trotzdem DANKE für die schnellen antworten . . . weiter so
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 12:14 Uhr
Bitte warten ..
Mitglied: Dani
08.11.2006 um 12:34 Uhr
Hi,
und was ist wenn 2 ipconfig's in einer Textdatei ist. Dann läuft find nur einmal durch!

01.
@echo off 
02.
 
03.
if exist ip%NWUSERNAME%.txt ( 
04.
 
05.
	::--> Hier brauch ich hilfe . . . wie setze ich die werte als Variable ??? <------ 
06.
	::set var1=ipconfig /all | find /i "ip-adresse" 
07.
	FOR /f "tokens=2 delims=:" %%i IN ('ipconfig /all ^| FIND "IP-Adre"') DO ( 
08.
 
09.
::		set var2=find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse" 
10.
		FOR /f "tokens=2 delims=:" %%k IN ('find /i \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt "ip-adresse"') DO ( 
11.
	 
12.
			if %%i NEQ %%K ( 
13.
			ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt 
14.
			break; 
15.
16.
17.
18.
19.
 
20.
if not exist ip%NWUSERNAME%.txt  ipconfig /all >> \\*\.*.*.*\*\*\ip%NWUSERNAME%.txt
Ich hab leider keine Zeit, den Spass zu testen!! Sorry...


Gruß
Dani
Bitte warten ..
Mitglied: AxelHahn
08.11.2006 um 12:59 Uhr
Hallo Brotox,


versuche es mal so:

For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do @Set IP=%%i
echo IP=%IP%

Damit bekommst du die (bei mehreren Netzwerkadaptern: letzte) IP-Adresse zurück.
Du könntest das noch aussieben, wenn du in der FOR-Anweisung noch zusätzlich nach einem weitreren String suchst (einen Teil der bekannten IP-Adresse).

Weiterhin suche ich nach einem Text "IP Address" ... für die dt. Windows-Version musst du das ggf. anpassen.


Viele Grüsse
-= Axel =-

[Nachtrag]

du kannst auch eine Liste aller IP-Adressen in eine Variable packen - hier mal mit __ getrennt. Auf jeden Fall wird dein Dateiname rechnerspezifisch und damit eindeutig.
{
Set IP=
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do call :addIP %%i
echo IP=%IP%
set logfile=%COMPUTERNAME%_%USERNAME%_%IP%.txt
echo logfile=%logfile%

pause && exit

:addIP
Set IP=%IP%%1___
}
[/Nachtrag]
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 13:10 Uhr
DANKE für eure wirklich sehr schnellen und hilfreichen antworten . . . Ich habe Dani sein vorschlag ein wenig umgeschrieben (einige denkfehler in seiner hektik vermute ich) und werde sie jetzt mal im netz ausprobieren . . .

@AxelHahn:
Alle Rechner in unserer Firma sind in deutsch installiert . . . falls mal einer nicht deutsch sein sollte kann man die abfrage halt auf ip oder adress oder so umstellen Aber bisher bin ich zufrieden . . . ich werde morgen wohl anfangen können eine neue Datenbank für unsere ip-verteilung zu erstellen.

@AxelHahn_2:
les dir den quelltext mal plz duch ^^ da steht was von ip%NWUSERNAME%.txt . . . sprich die datei wird schon rechnerspezifisch gespeichert . . . sonst wärs ja unfug bei 250 rechnern die abfrage durchlaufen zu lassen . . .
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 14:20 Uhr
Hab mir mal deine HP angeguckt ;) sieht ganz interessant aus . . . hast wohl einiges drauf was Batch-Dateien angeht . . .

Hier ist die Datei an der ich gerade rumbastele . . . vielleicht findest du einen grund weßhalb es nicht richtig funktioniert

Hier nochmal meine Problembeschreibung . . .
Ich will Auf einem Server eine Textdatei mit dem inhalt ipconfig /all haben (funktioniert auch)
Nun will ich das bei jeder anmeldung eines Users überprüft wird ob die IP, mit der der Mitarbeiter ins Netz geht, auch mit der aus der Textdatei übereinstimmt. Wenn dies nicht so ist - soll er die ipconfig /all an die datei anfügen . . . Damit ich auch diejenigen erfasse die mehrere Rechner haben . . . .

Hier die Überarbeitete Bat von Deni . . .
@echo off

set varpfad="\\*\.*.*.*\*\*\"

if exist %varpfad%ip%NWUSERNAME%.txt (

::set var1=ipconfig /all ^| find /i "ip-adr"
FOR /f "tokens=2 delims=:" %%A IN ('ipconfig /all ^| FIND /i "ip-adr"') DO (

::set var2=find /i %varpfad%ip%NWUSERNAME%.txt "ip-adr"
FOR /f "tokens=2 delims=:" %%B IN ('find /i %varpfad%ip%NWUSERNAME%.txt "ip-adr"') DO (

if %%A NEQ %%B (
goto:eof)
if not %%A NEQ %%B (
ipconfig /all >> %varpfad%ip%NWUSERNAME%.txt
)
)
)
)

if not exist %varpfad%ip%NWUSERNAME%.txt ipconfig /all > %varpfad%ip%NWUSERNAME%.txt
)
Bitte warten ..
Mitglied: 8644
08.11.2006 um 14:27 Uhr
Hi,

hat zwar nichts mit batch zu tun, aber Look@LAN könnte dein Problem auch lösen.

Psycho
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 14:34 Uhr
oO und wie? Glaub nich . . . unser netz hier ist ziemlich abgeschottet . . . das muss jeweils lokal mit ipconfig gemacht werden . . . ich brauch ja nich nur die ip und den Namen des rechners . . .

Ich hab ja nur n problem mit dem setzen der variable und dem anschließendem vergleich 2er variablem . . . alles andere funktioniert ja . . . ich hab ja die daten von 90% unserer Rechner . . . halt nur von den Mitarbeitern nich die mehr wie einen Rechner haben.
Bitte warten ..
Mitglied: 8644
08.11.2006 um 14:40 Uhr
ich wollte damit nur sagen, dass dieses Tool dein Netzwerk scannt, die IP, den Rechnernamen und den angemeldeten User auflistet.

Psycho
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 14:44 Uhr
. . . Zeigt der auch den UserNamen von Novell an? ansonsten bringt mir das nichts . . . da jede Arbeitsstation den selben usernamen hat ^^
Bitte warten ..
Mitglied: 8644
08.11.2006 um 14:48 Uhr
...das käme auf einen Versuch an! Ich hab hier kein Novell (mehr).

Psycho
Bitte warten ..
Mitglied: AxelHahn
08.11.2006 um 14:49 Uhr
Jetzt habe ich noch ein Verständnisproblem:
Die Liste der Netzwerkkarten ist rein Rechnerspezifisch - egal welcher Benutzer sich an dieser Kiste anmeldet - es werden dieselben Netzwerkkarten drin sein.

Wenn du zu jedem Benutzernamen alle seine IPs wissen willst, kannst du die Datei mit Benutzernamen aber ohne Rechner/ IP anlegen.

01.
set logfile=\\server\share\%NWUSERNAME%.txt 
02.
echo START 
03.
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP Address"') Do call :addIP %%i 
04.
echo FERTIG 
05.
goto EOF 
06.
 
07.
:addIP 
08.
echo teste %1 
09.
:: ipconfig wird nur dann hinjzugefügt, wenn die IP nicht im Text ist: 
10.
findstr "%1" "%logfile%" >nul ||  ipconfig /all >>"%logfile%" 
11.
goto EOF
oder meinst du nochwas anderes??



Viele Grüsse
-= Axel =-
Bitte warten ..
Mitglied: Biber
08.11.2006 um 14:58 Uhr
Sorry, wenn ich mich noch mal einmenge.

Unabhängig von den handwerklichen Problem in der obigen Skizze ist die Strategie IMHO Bullshit suboptimal.

- In der "IPConfig /all"-Ausgabe stehen ein oder mehrere Zeilen der Form:
"IP-Adresse..............: xxx.yyy.zzz.nnn"
Okay.
Aber auch jede Menge andere Zeilen mit xxx.yyy.zzz.nnn-Nummern.
- In der angesammelten %username%...IpconfigSammelsurium.txt stehen aneinandergereihte "IPConfig /all"-Ausgaben aus 12 Jahrhunderten.
- Gesucht wird in der "%username&...IpconfigSammelsurium.txt" aber nur nach "xxx.yyy.zzz.nnn", nicht nach der kompletten Zeile mit "IP-Adresse.....:xxx.yyy.zzz.nnn"

Kann nicht verlässlich sein.

Wenn schon, musst Du mit zwei Dateien arbeiten.
Eine, die nur jeweils die "IP-Adresse.......xxx.yyy.zzz.nnn"-Zeilen enthält.
Und (wenn Du die sinnvoll brauchen kannst) dieses IPConfig-All-Sammelbecken.

Wobei ich immer noch nicht verstehe, wozu denn alle jemals zugewiesenen IPs gesammelt werden sollen.

Gruß
Biber
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 15:02 Uhr
Jetzt versteh ich dich nicht ganz . . .

Wir haben ein Novell Netz in dem sich jeder user an jedem PC anmelden kann . . .
Und wir haben mitarbeiter die mehrere PC's haben . . .
Sprich ich muss einfach nur wissen welcher user mit welcher ip reingeht.

Die Variable %NWUSERNAME% gibt den Usernamen von Novell an.
Also soll jedes mal wenn ein mitarbeiter ins netz geht diese textdatei aktualisiert werden.
Und wenn ein user mit verschiedenen IP's ins netz geht soll halt protokolliert werden.
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 15:06 Uhr
NEIN!

Da die ip%NWUSERNAME%.txt Novell abhängig ist wird von jedem user EINE datei mit dem namen ipxyz.txt erstellt . . . also gibt es für jeden user EINE datei die EINDEUTIG ist und nicht alle user in einer datei aneinandergeriht . . .
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 15:10 Uhr
Bitte warten ..
Mitglied: BrotoX
08.11.2006 um 15:10 Uhr
Bitte warten ..
Mitglied: Biber
08.11.2006 um 15:13 Uhr
EINE datei die EINDEUTIG ist und nicht alle user in einer datei aneinandergeriht

Nein, das habe ich auch nicht angenommen oder geschrieben.
Aber EINE User-spezifische Datei, die ein, zwei, drei oder 487 "IPConfig /All"-Ausgaben enthalten kann.
Falls dieser User im Laufe seines Arbeitsverhältnisses in einer Firma mal verschiedene IPs zugewiesen bekommt.

Und das versteh ich nicht...wozu willst Du die sammeln?

Gruß
Biber
Bitte warten ..
Mitglied: BrotoX
09.11.2006 um 11:05 Uhr
Ich möchte diese "%username&...IpconfigSammelsurium.txt" haben um nachvollziehen zu können mit welchen ips die mitarbeiter die mit mehreren Rechnern arbeiten ins netz gehen. Bei allen andern mitarbeitern verwenden wir die batch die ich bereits im einsatz habe weiter . . . sprich die .txt wird einfach überschrieben. Ich kann ja mit Novell jedem Mitarbeiter ein anderes Anmeldeskript zuweisen . . . und da wir wissen welche mitarbeiter mit mehreren rechnern ins netz gehen wird nur bei denen DIE BATCH aus diesem BEITRAG genutzt. Und die komplette ipconfig /all möchte ich haben damit ich weiß mit welchen einstellungen der Mitarbeiter ins netz geht (von abteilung zu abteilung verschieden).

nebenbei habe ich mir bereits eine batch geschrieben die alle ips mit dem usernamen in eine datei schreibt . . . diese kann ich dann wunderbar in eine access datenbank importieren . . . dann schreibe ich eine abfrage die von mir aus einmal am tag durchläuft . .. und wir sind immer auf dem aktuellstem stand . . .

Mit freundlichen Grüßen

BrotoX
Bitte warten ..
Mitglied: BrotoX
09.11.2006 um 11:05 Uhr
Bitte warten ..
Mitglied: Biber
09.11.2006 um 18:31 Uhr
Hmm, BrotoX,

wenn ich Deinen letzten Kommentar richtig verstehe, sind dann Dein Problem und auch dieser Thread "Gelöst"?

Oder fehlt noch was bzw. wie sieht denn jetzt die Musterlösung aus?

Grüße
Biber
Bitte warten ..
Mitglied: BrotoX
10.11.2006 um 11:02 Uhr
mein problem ist nach wie vor nicht gelöst

Ich kann immer noch nicht die Mitarbeiter erfassen die mehrere IPs sprich mehrere Rechner verwenden.

Ich bekomms zwar hin das er die variablen richtig setzt . . . aber ich schaff es nicht mit einem einfachen if satz meine probleme zu lösen.
Beispiel

nehmen wir an
var1= 192.168.0.1
var2= 192.168.0.2

dann möchte ich das,

if "%var1%"=="%var2%" goto end
if not "%var1%"=="%var2%" ipconfig /all >>ip%NWUSERNAME%.txt
Das müsste doch zu lösen sein . . . ich schätz mal da ist nur ein kleiner fehler drinn den ich nicht finde . . .

Ich wäre um weiter Vorschläge sehr Dankbar!


Mit freundlichen Grüßen

BrotoX
Bitte warten ..
Mitglied: Dani
10.11.2006 um 11:20 Uhr
Hi,
das 2. IF brauchst du gar nicht!

01.
var1= 192.168.0.1 
02.
var2= 192.168.0.2 
03.
 
04.
 
05.
 
06.
if "%var1%"=="%var2%" goto end 
07.
ipconfig /all >>ip%NWUSERNAME%.txt
Gruß
Dani
Bitte warten ..
Mitglied: BrotoX
10.11.2006 um 11:41 Uhr
okay hast recht . . . aber ändert nichts daran das diese gleichung irgendwie nicht funktioniert
Bitte warten ..
Mitglied: Dani
10.11.2006 um 13:40 Uhr
Hi,
also die obige Gleichung stimmt auch nicht!!!
Kannst du mal posten, welchen Code du im Moment hast??


Gruß
Dani
Bitte warten ..
Mitglied: BrotoX
14.11.2006 um 12:26 Uhr
Sorry das ich erst jetzt antworte . . .

Also zur zeit steht es so drinn
ipreal="192.168.0.1"
iplisted="192.168.0.2"

if "%ipreal%"=="%iplisted%" goto end
if not "%ipreal%"=="%iplisted%" ipconfig /all > ip%NWUSERNAME%.txt
Ich wär für verbesserungsvorschläge sehr dankbar . . .
Bitte warten ..
Mitglied: AxelHahn
14.11.2006 um 13:19 Uhr
Hi Brotox,


wozu der Vergleich? Nimm den Konstrukt:
01.
findstr "%ipreal%" "ip%NWUSERNAME%.txt" >nul ||  ipconfig /all >>"ip%NWUSERNAME%.txt" 
.s Posting 08.11.2006 um 14:49:30 Uhr



Viele Grüsse
-= Axel =-
Bitte warten ..
Mitglied: Biber
14.11.2006 um 13:21 Uhr
Moin Brotox,

vielleicht ist das führende Leerzeichen bei der "IPConfig /All"-Auswertung das Problem bei Dir... das lässt sich aber ohne den echten Code nicht erkennen.

Probier es bitte mal mit folgenden Anpassungen (ausgehend von AxelHahn's Variante vom 8.11.):

01.
@echo off & setlocal 
02.
Set "iplisted=192.168.0.1" 
03.
REM Die IP, mit der verglichen werden soll: OHNE führendes Leerzeichen; OHNE Anführungszeichen 
04.
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Findstr /i /c:"IP-Adresse"') Do For %%j in (%%i) do Set "ipReal=%%j" 
05.
REM Die IP aus IPConfig /All: OHNE führendes Leerzeichen; OHNE Anführungszeichen 
06.
REM Kontrolle  : 
07.
Echo IPlisted: [%iplisted%] ...IPReal: [%ipReal%] 
08.
REM Kontrolle 
09.
Echo DEBUG...Nächster Befehl: if "%ipreal%"=="%iplisted%" goto end 
10.
if "%ipreal%"=="%iplisted%" goto end 
11.
Echo DEBUG...Nächster Befehl: if not "%ipreal%"=="%iplisted%" ipconfig /all ^> ip%NWUSERNAME%.txt 
12.
if not "%ipreal%"=="%iplisted%" ipconfig /all > ip%NWUSERNAME%.txt 
13.
REM     usw...... 
14.
 
15.
:end
Gruß
Biber
Bitte warten ..
Mitglied: BrotoX
20.11.2006 um 08:31 Uhr
Axel . . . Du bist Genial!

Es Funktioniert jetzt alles Wunderbar!

Ich danke euch für die schnellen Hilfen . . .


Bis zum nächsten problem ^^


Mit freundlichen Grüßen

BrotoX
Bitte warten ..
Mitglied: BrotoX
20.11.2006 um 08:33 Uhr
Auch dir . . . Danke für die mühe!

Hab jetzt dank AxelHahn eine Lösung gefunden.
Habe deinen Lösungsvorschlag daher nicht ausprobiert.


Mit freundlichen Grüßen

BrotoX
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Erkennung und -Abwehr
Backdoor in IP-Kameras von Sony (3)

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

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

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...