quickly0815
Goto Top

Script in Abhängigkeit der IP

Siehe BEitrag: https://www.administrator.de/index.php?content=166689

Kann man ein Script schreiben indem in abhängigkeit der IP- Netzwerkbereiches aktionen ausgeführt werden.
Leider funktioniert der Befehl %logonserver% nicht da beide Server von den Clients (gesehen) werden.
Worinn sich die Netzwerke unterscheiden ist jedoch die IP.
if %IP% 10.2.*.* goto DC1
if %IP% 10.3.*.* goto DC2
vereinfacht ausgedrückt
Kommentar vom Moderator Biber am 01.06.2011 um 06:35:31 Uhr
Originaltitel "Script in abhängikeit der IP" angepasst.

Content-ID: 167133

Url: https://administrator.de/forum/script-in-abhaengigkeit-der-ip-167133.html

Ausgedruckt am: 24.12.2024 um 13:12 Uhr

Pjordorf
Pjordorf 29.05.2011 um 17:35:01 Uhr
Goto Top
Hallo "Siehe BEitrag: http",

Zitat von @Quickly0815:
Kann man ein Script schreiben indem in abhängigkeit der IP- Netzwerkbereiches aktionen ausgeführt werden
vereinfacht ausgedrückt
Ja.

Gruß, (auch an "vereinfacht ausgedrückt")
Peter
60730
60730 29.05.2011 um 17:36:34 Uhr
Goto Top
auch dir

  • keinen Gruß - kostet ja Zuschlag und grade am Sonntag muß es schnell gehen
  • den Tipp die Suchmaschine anzuwerfen.

Kann man ein Script schreiben indem in abhängigkeit der IP- Netzwerkbereiches aktionen ausgeführt werden.
  • ja und siehe suchfunktion wurde das auch schon x mal gemacht
Leider funktioniert der Befehl %logonserver% nicht da beide Server von den Clients (gesehen) werden.
  • Da %logonserver% eine Variable ist und kein Befehl....

vereinfacht ausgedrückt
so siehts aus.
Quickly0815
Quickly0815 29.05.2011 um 19:02:10 Uhr
Goto Top
Danke für die überaus hilfreichen Kommentare:
Aber leider ist nicht jeder als Admin auf die Welt gekommen daher auch mein Level "Frischling"
Das ist schon klar das %logonserver% kein Befehl ist, aber ich dachte das jeder der sich hier tummelt erkennt das ich den Befehl IF mit der Variable ...... meine
Aber wenn ich etwas derartiges gefunden hätte, würde ich nicht eure unbezahlbare und kostbare zeit stehlen.
Etwas ähnliches habe ich z.B. gefunden unter: http://board.gulli.com/thread/653511-ip-adresse-auslesen-und-aendern-pe ...
Nur damit ihr nicht glaubt ich hätte nicht gesucht.
60730
60730 29.05.2011 um 19:22:40 Uhr
Goto Top
Zitat von @Quickly0815:
Danke für die überaus hilfreichen Kommentare:
Aber leider ist nicht jeder als Admin auf die Welt gekommen daher auch mein Level "Frischling"
Was natürlich alles entschuldigt...
aber ich dachte das jeder der sich hier tummelt erkennt das ich den Befehl IF mit der Variable ...... meine
... und ich dachte wohl - genauso wie pjodorf, dass der doppelte Wink mit dem Zauhnpfahl vereinfacht 0815mäßig....

Nur damit ihr nicht glaubt ich hätte nicht gesucht.

merke - nur weil einer sich nach einem deutschen Nachriegsmopped mit 0815 suffix und dann auch noch Grußlos als Frischling hier auftaucht, bedeutet es noch lange nicht, dass er die Suchfunktion benutzt... (wie war das mit der einen Ausname, der eine Zahl im Nick hat?)


Die Antwort auf alle Fragen == 42
Quickly0815
Quickly0815 29.05.2011 um 21:34:04 Uhr
Goto Top
Hallo Timo
Verzeih die etwas barsche art, aber ich hätte meine Kiste vor lauter wut am liebsten in die Ecke geworfen:
Ich habe deinen Rat befolgt ==42 (-:
Ich weis leider nicht warum ich das nicht selbst gefunden habe.
Aus einer Antwort von dir habe ich volgendes Script gebastelt:
@echo off
@echo.
ipconfig |find "10.2.10.2: 192.168.1.1" && goto SDC01
goto ohneAD
:SDC01
rem ----------------------------das ist SDC01-----------------------------------
net use F: \\SDC01\Daten persistent:no
:ohneAD

echo Fehler, unbekannter Anmeldeserver, keine Laufwerke und Drucker werden verbunden

GOTO ENDE
:ENDE
ende
pause
kann man in der IP auch einen Platzhalter einbauen wie: 192.168.*.*
60730
60730 29.05.2011 um 22:07:44 Uhr
Goto Top
Zitat von @Quickly0815:
Hallo Timo
Verzeih die etwas barsche art, aber ich hätte meine Kiste vor lauter wut am liebsten in die Ecke geworfen:
  • Dafür kann die Kiste doch nix und in dem Fall muß man ja noch froh sein, dass du dich nicht zum schämen in die Ecke gestellt hast.
kann man in der IP auch einen Platzhalter einbauen wie: 192.168.*.*
ping -n 1 %computername%|find "192.168." && echo 192.168  

btw:

goto ohneAD
echo Fehler, unbekannter Anmeldeserver, keine Laufwerke und Drucker werden verbunden

Vielleicht wäre es ja mal Zeit, dass du dein Stillschweigen, welches Ziel das ganze haben soll etwas lüftest....
Denn das vommt mir spanischer als das gejammere von Alfons O. vor.
linkit
linkit 30.05.2011 um 08:33:39 Uhr
Goto Top
Also ohne Herrn TimoBell nahe treten zu wollen:

Mit einem Ping würde ich es nicht lösen. Wenn sich alle Rechner am Netz anmelden am morgen und ich einen Ping loslaufen lasse, dann habe ich erstmal Traffic. Klar kann man sagen, für diese Lösung und warum das jetzt so tragisch nehmen.

Es ist eine Grundeinstellung. Wenn man einmal so eine Lösung macht, dann macht man die immer und am Schluss hat man einen riesen Brei.... Hier sollte man immer sauber arbeiten.

Also sorry Timo... das ist nicht persönlich, aber wäre nicht mein Weg....


So Quickly... ich kenne dich ja schon von dem anderen Thread, da tauchte die Frage schon auf wegen dem DC. Erstmal zur Erklärung. Scheinbar arbeitest du mit richtigen AD Standorten über eine Domäne. Wenn das so ist, dann können beide DCs gesehen werden.

Deine Idee mit der IP-Adresse ist ganz nett, hat aber auch ein paar Denkfehler. Wenn ein Client beispielsweise mehrere IP-Adressen hat oder das Standardgateway im selben Netz liegt, dann hilft die Form erstmal so nicht weiter:

Ein Beispiel:

Führe auf dem Command-Prompt folgendes aus: ipconfig|find /i "10.2." >%temp%\IP.txt

Ich habe mich bei der IP mal nach dir gerichtet. Dann könnte folgendes bei dem Befehl

type %temp%\ip.txt

herauskommen:

IPv4-Adresse . . . . . . . . . . : 10.2.1.1
Standardgateway . . . . . . . . . : 10.2.1.250

Das soll natürlich nur ein Beispiel sein.


Auch das oben genannte Problem würde sich lösen lassen, dann müßte man nur mehr abfangen, aber gehen wir jetzt einfachheitshalber mal davon aus, dass die Rechner entweder nur eine Netzwerkkarte haben oder diese Netzwerkarten sich dann in andere Netze befinden würden und die Rechner sind alle Windows 7 Clients. (Dann ist die Textung gleich). Wie gesagt, alles andere geht auch, ist nur etwas komplexer, aber soll das mal erklären:

Dann könntest du folgendes machen:

ipconfig|find /i "IPv4-Adresse" >%temp%\ip.txt
type %temp%\ip.txt|find /i "10.2" >%temp%\ip2.txt

Nach diesem Beispiel solltest du zumdinest schon die Zeile der IP-Adresse isoliert haben. Jetzt mußt du aus dem String nur noch diese extrahieren.

Bitte nicht falsch verstehen, das ist nur Ansatz und soll nur beispielhaft zeigen, was geht und auf was du achten sollst. Im Batch würde ich es anders schreiben. Aber grundsätzlich geht was du vorhast, nur eben mußt du die Bedingungen beachten.
linkit
linkit 30.05.2011 um 08:46:28 Uhr
Goto Top
Du kannst mal folgendes Tool ausprobieren:

http://robkennedy.com/wp-content/uploads/2011/05/myip.1.0.final_.window ...

Das Tool installiert sich unter: C:\Program Files (x86)\RobKennedy.com\myIP

Wechsle in das Verezichnis und rufe folgenden Befehl auf:

myip -adapter -ip4 -localonly

Vielleicht hilft dir das weiter. Wenn es das ist, brauchst du die Ausgabe nur in eine Variable packen.
60730
60730 30.05.2011 um 09:11:28 Uhr
Goto Top
moin,
Zitat von @linkit:
Also ohne Herrn TimoBell nahe treten zu wollen:

Mit einem Ping würde ich es nicht lösen. Wenn sich alle Rechner am Netz anmelden am morgen und ich einen Ping loslaufen
lasse, dann habe ich erstmal Traffic. Klar kann man sagen, für diese Lösung und warum das jetzt so tragisch nehmen.

Es ist eine Grundeinstellung. Wenn man einmal so eine Lösung macht, dann macht man die immer und am Schluss hat man einen
riesen Brei.... Hier sollte man immer sauber arbeiten.

Also sorry Timo... das ist nicht persönlich, aber wäre nicht mein Weg....

Das sehe ich fast genauso...
  • Ein einzelner "normaler" Ping - ohne Big Paket und Trallala - auf seinen eigenen Rechner - wessen Netz das nicht aushält, der hat ganz andere Sorgen.
  • dein Ansatz - via doppeltem temp Files zu werkeln - wäre dagegen schon eher "brei" face-wink
type %temp%\ip.txt|find /i "10.2" >%temp%\ip2.txt  
- ist leicht abgekupferter Schmarren durchs Knie in den Kopf geschossen face-wink
der reinen Lehre nach /? (und ich sitze mal wieder vor einem Mac...)
find "10.2" %temp%\ip.txt>%temp%\ip2.txt  
  • Bei zahlen gibts kein /i
  • typen auch flüssiger als flüssig.
Bitte nicht falsch verstehen, das ist nur Ansatz und soll nur beispielhaft zeigen, was geht und auf was du achten sollst. Im Batch würde ich es anders schreiben.
  • nochmal - fast das gleiche gilt auch bei meinen Beispielen - und wenn du es im Batch anders schreiben würdest - warum machst du es dann nicht gleich?
Ich hab ihm einen Tipp gegeben, wo er suchen soll - er hat einen Treffer ausgesucht und es gibt noch x andere Lösungen - eine davon zeigte ich Ihm.

Last but not least:

Vielleicht wäre es ja mal Zeit, dass du dein Stillschweigen, welches Ziel das ganze haben soll etwas lüftest....
Denn das vommt mir spanischer als das gejammere von Alfons O. vor.

Leider funktioniert der Befehl %logonserver% nicht da beide Server von den Clients (gesehen) werden.
In einem richtig geplanten und eingerichteten Netzwerk - kann nur durch den Ausfall eines Standortdcs ein anderer DC aus einem anderen Standort den netlogon machen.
Das die sich theoretisch sehen ist bedingung - aber bedeutet nur im Worstcase etwas.

Und nochmal - das scheint ein Loginskript werden zu wollen - und ein loginscript liegt üblicherweise auf dem Server - macht das meiste also ......


..nix genaues schreibt er ja nicht.
linkit
linkit 30.05.2011 um 13:26:21 Uhr
Goto Top
Hallo Timo,

natürlich macht man das nicht mit doppelten Textfiles. Das habe ich auch geschrieben, dass man das in der Batchdatei anders machen würde. Aber ich versuche erstmal den Ansatz von dem Scheriber aufzunehmen und mit den beiden einfachen Befehlen deutlich zu machen. In den beiden Textdateien kann man dann reinsehen (deswegen auch der Type) und sieht, was geschrieben wurde bzw. was passierte.

Mit den DCs ist das nicht nur theoretisch bedingt. Wenn einer ausfällt, dann möchte ich das genauso sicherstellen, als wenn dieser da wäre.


Dem Loginskript ist erstmal egal wo es liegt, denn die Abfrage würde trotzdem auf dem Client ausgeführt werden. Grundlegend gäbe es noch die Möglichkeit das ganze über die Gruppenrichtlinien zu machen. Das Skript kann man mit dem WMI Filter auch in Abhängigkeit des Standortes starten.

Letzter Punkt ist Ping: Es geht nicht darum, ob das Netz das aushält oder nicht. Da sehe ich schon den Wiederspruch zum sauber konfigurierten Netz. In einem sauber konfigurierten Netz macht man solche Übungen nicht. Es wird sozusagen dadurch impliziert.
60730
60730 30.05.2011 um 13:51:11 Uhr
Goto Top
moin linkit,

sei mir nicht böse -aber ...
Der "Scheriber" von dem Schnippsel ipconfig |find "1, wäre ich face-wink und ich sehe da bei Verwendung von Ziffern keine Veranlassung /i einzusetzen.

Dem Loginskript ist erstmal egal wo es liegt, denn die Abfrage würde trotzdem auf dem Client ausgeführt werden.
Jein, wennin dem Script sowas steht:
echo Fehler, unbekannter Anmeldeserver, keine Laufwerke und Drucker werden verbunden
dann ist es nicht egal, wo es liegt...

Ich vermute du hast 1.001 bessere Ideen und alle schon komplett so durchexerziert, dass du hier die 1.002 Variante postest - ohne - es sei denn du hast eine bessere Kristallkugel oder PN - zu wissen, was das denn sein werden soll.

btw:

Zuerst nehmen wir üblicherweise die einfachen Geschosse, erst wenn Spatzen kommen holen wir die große |Kanone
Da sehe ich schon den Wiederspruch zum sauber konfigurierten Netz. In einem sauber konfigurierten Netz macht man solche Übungen nicht.
Darf ich widerschreiben?
  • in einem sauber konfigurierten Netz macht das OS im Hintergrund noch ganz andere Sachen, und Üben tun wir ja nicht.

btw2: Dein Vorschlag wäre ja ein Trittpartybrettfahrertool - da nehm ich lieber den OnboardJoker und bin dann draussen.
Quickly0815
Quickly0815 30.05.2011 um 21:00:08 Uhr
Goto Top
Hallo Zusammen

Leider verstehe ich nur einen Teil Eurer Diskusion.
Hier mein Vorhaben:
Wir haben ca. 30 Client alle Win7, 2 DC mit win 2008 R2 die über VPN-SSL Repliziert werden.
Ich hätte jetzt gerne ein Anmeldescript für Mobile User die in Abhängikeit des jeweiligen Standorts bestimte Drucker und Netzfreigaben zugewiesen bekommen
Unsere Files werden z.B. immer auf LW D: gemappt, nur liegen die Files am einen Standort auf einem Fileserver und am anderen Standort direkt auf dem DC
Er könnte natürlich immer das gleiche Laufwerk behalten, wenn er jedoch nicht in seinem Stamm-Standort ist ladet er alle Files über die 2Mbit SDSL Leitung, von seinem DC, was bei teilweisen 1GB-Großen Files nicht lustig ist.
60730
60730 30.05.2011 um 21:41:25 Uhr
Goto Top
Zitat von @Quickly0815:
Hallo Zusammen

Leider verstehe ich nur einen Teil Eurer Diskusion.

  • es ging u.a darum, dass - wenn wir dir einen Weg zeigen, dieser möglichst "einfach" sein sollte.

Hier mein Vorhaben:
Wir haben ca. 30 Client alle Win7, 2 DC mit win 2008 R2 die über VPN-SSL Repliziert werden.
  • was wird da repliziert - dfs all inclusive oder nur netlogon?
Ich hätte jetzt gerne ein Anmeldescript für Mobile User die in Abhängikeit des jeweiligen Standorts bestimte Drucker und Netzfreigaben zugewiesen bekommen
  • Und so, wie ich deinen Ansatz verstanden habe, willst du das auf den Clients speichern - sonst macht das mit dem kein Netz ja keinen sinn.

Unsere Files werden z.B. immer auf LW D: gemappt, nur liegen die Files am einen Standort auf einem Fileserver und am anderen Standort direkt auf dem DC

Er könnte natürlich immer das gleiche Laufwerk behalten, wenn er jedoch nicht in seinem Stamm-Standort ist ladet er alle
Files über die 2Mbit SDSL Leitung, von seinem DC, was bei teilweisen 1GB-Großen Files nicht lustig ist.

also kein dfs?

:parameter
setlocal
set server=
tracert -h 1 SDC01 |find "10.2.1.250" && set "server=SFileserver"  
if "%logonserver%"=="\\%computername%" echo falls das Script lokal gespeichert wäre und noch kein vpn Tunnel aufgesetzt ist - dann...  
if "%server%"=="" set "server=SDC01"  

:map
net use d: %server%\freigabe.

wobei man nun beim nächsten Weg wäre - wenn Tracert über das Gateway laufen muß - dann ist das Ziel nicht im gleichen Netz.
Dabei und weil es schneller geht - hilft es den Abschnitt auf 1. zu setzen - der Rest wird nicht angezeigt (braucht man auch nicht)

Das ganze setzt dir eine Variable und die nimmst du dann im ganzen Script.

Gruß
Quickly0815
Quickly0815 18.08.2011 um 11:47:07 Uhr
Goto Top
Habe es jetzt herausgefunden ich verwende den Befehl:
IF /i %logonserver% == \\sdc01 GOTO