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

Je nach IP-Adresse Server für auszuführende Datei ändern

Frage Entwicklung Batch & Shell

Mitglied: caschopl

caschopl (Level 1) - Jetzt verbinden

20.12.2013, aktualisiert 23.12.2013, 1827 Aufrufe, 14 Kommentare, 1 Danke

Hallo,
ich benötige eure Hilfe. Ich habe verschiedene Server (in Europa verteilt) auf denen jeweils in einem Share die gleiche auszuführende Datei liegt.
Per Loginscript wird eine Batchdatei ausgeführt, die die jeweiliege Datei ausführen soll die auf dem jeweiligen location Server liegt.

Das ganze soll ungefähr so aussehen.

:LOCATION
for /f "delims=[] tokens=2" %%a in ('ping -4 %computername% -n 1 ^| findstr "["') do (set ipaddress=%%a)
echo IP address detected: %ipaddress%

REM detect server site and set server

REM detect DE set NAS
if "%ipaddress%"=="%ipaddress:"xxx.xxx.102"=%" (
set server=Germany\public\TIAudit
GOTO WINNT
)
if "%ipaddress%"=="%ipaddress:"xxx.xxx.105"=%" (
set server=AUSTRIA\public\TIAudit
GOTO WINNT
)
if "%ipaddress%"=="%ipaddress:"xxx.xxx.109"=%" (
set server=FRANCE\public\TIAudit
GOTO WINNT
)
:WINNT
REM Run TrackIT Audit
Echo Please Wait....processing inventory

\\%SERVER%\AUDIT.EXE /NOREGAPPS

Leider wird immer der GERMANY Server verwendet.

Hat hier jemand eine Idee?

Danke für eure Hilfe.

Gruß & schon mal Frohe Weihnachten
Carsten
Mitglied: SaschaRD
20.12.2013 um 13:15 Uhr
Hallo Carsten,

warum er immer nur den Germany-Server verwendet? Ist eindeutig:
Du sagt Ihm doch nachdem "detect"
01.
REM detect DE set NAS 
02.
if "%ipaddress%"=="%ipaddress:"xxx.xxx.102"=%" ( 
03.
set server=Germany\public\TIAudit 
04.
GOTO WINNT 
05.
)
das er ein "goto" machen sollen.
Somit wird nach der ersten Setzung direkt nach:
01.
:WINNT 
02.
REM Run TrackIT Audit 
03.
Echo Please Wait....processing inventory 
04.
 
05.
\\%SERVER%\AUDIT.EXE /NOREGAPPS
gesprungen.

Gruß, Sascha
Bitte warten ..
Mitglied: caschopl
20.12.2013 um 13:18 Uhr
Hallo Sascha,

leider bin ich nicht der Profi was Batches angeht,
wie kann ich das machen, dass er weiter prüft?

Danke

LG
Carsten
Bitte warten ..
Mitglied: SaschaRD
20.12.2013, aktualisiert um 13:32 Uhr
Hallo Carsten,

Lösung-1 ist mit weiteren "Goto's":
01.
REM detect DE set NAS 
02.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.102"=%" ( 
03.
set server=Germany\public\TIAudit 
04.
echo ger 
05.
GOTO AUSTRIA 
06.
07.
:AUSTRIA 
08.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.105"=%" ( 
09.
set server=AUSTRIA\public\TIAudit 
10.
echo austria 
11.
GOTO FRANCE 
12.
13.
:FRANCE 
14.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.109"=%" ( 
15.
set server=FRANCE\public\TIAudit 
16.
echo france 
17.
GOTO WINNT 
18.
)
Oder Lösung-2, Du lässt die "Goto's" weg:
01.
REM detect DE set NAS 
02.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.102"=%" ( 
03.
set server=Germany\public\TIAudit 
04.
echo ger 
05.
06.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.105"=%" ( 
07.
set server=AUSTRIA\public\TIAudit 
08.
echo austria 
09.
10.
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.109"=%" ( 
11.
set server=FRANCE\public\TIAudit 
12.
echo france 
13.
GOTO WINNT 
14.
)
Habe Dir dazwischen Mal "echo's/Ausgaben" gemacht, damit kannst Du dann sehen ob er auch wirklich dort ist.


Gruß, Sascha
Bitte warten ..
Mitglied: caschopl
20.12.2013 um 14:56 Uhr
Hallo Sascha,
irgendwie läut das ding nicht rund. Hier mal die komplette Batch:

@echo off
REM Determine OS and run appropriate commands
REM if "%OS%"=="Windows_NT" goto LOCATION
REM goto END

VER | find "Microsoft Windows XP [Version 5.1" > nul
IF %errorlevel% EQU 0 GOTO LOCATION
VER | find "Microsoft Windows [Version 6.1" > nul
IF %errorlevel% EQU 0 GOTO LOCATION
VER | find "Microsoft Windows [Version 6.2" > nul
IF %errorlevel% EQU 0 GOTO LOCATION
goto END

:LOCATION
for /f "delims=[] tokens=2" %%a in ('ping -4 %computername% -n 1 ^| findstr "["') do (set ipaddress=%%a)
echo IP address detected: %ipaddress%

REM detect DE set NAS
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.101"=%" (
set server=GERMANY\public\TIAudit
echo GERMANY
)
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.102"=%" (
set server=FRANCE\public\TIAudit
echo FRANCE
)
IF "%ipaddress%"=="%ipaddress:"xxx.xxx.103"=%" (
set server=AUSTRIA\public\TIAudit
echo AUSTRIA
)

:WINNT
REM Run TrackIT Audit
Echo Please Wait....processing inventory
Echo %server%
REM \\%SERVER%\AUDIT.EXE /NOREGAPPS

:END
exit

Irgendwie nimmt wird das Ergebnis %server% immer den letzten server, in dem Fall immer "AUSTRIA".

Gruß
Carsten
Bitte warten ..
Mitglied: Endoro
20.12.2013, aktualisiert um 15:34 Uhr
Hey,
schau dir doch einfach mal die Ausgabe von
01.
echo("%ipadress:"xxx.xxx.xxx.102"=%"
an. Zoll zahlen ist schon richtig, aber zuviel ist Bestechung
Abgesehen von allem anderen...
lg.
Bitte warten ..
Mitglied: SaschaRD
20.12.2013 um 15:36 Uhr
Hallo Carsten,

bitte den code mit "<"code">" "</"code">" formatieren, siehe dazu auch Formatierungshilfe.
Wenn ich es richtig verstanden haben:
Hast Du die 3 x Server (Deutschland, Frankreich und Österreichen), auf denen jeweils in einem shared-folder, die gleiche auszuführende Datei liegt.
Du möchtest jetzt von deinem lokalen Computer aus per Batch (Loginskript), dich zu den Servern verbinden und die Datei ausführen, Richtig?

Wenn das Skript ausgeführt wird, möchtest Du dann, dass auf allen 3 x Servern die Datei ausgeführt wird oder auf einem bestimmten? Oder beides?
Bitte warten ..
Mitglied: caschopl
20.12.2013 um 15:49 Uhr
Hallo Sascha,

Wenn ich es richtig verstanden haben:
Hast Du die 3 x Server (Deutschland, Frankreich und Österreichen), auf denen jeweils in einem shared-folder, die gleiche
auszuführende Datei liegt.
Du möchtest jetzt von deinem lokalen Computer aus per Batch (Loginskript), dich zu den Servern verbinden und die Datei
ausführen, Richtig?
ja, so ist die Konstelation.

Wenn das Skript ausgeführt wird, möchtest Du dann, dass auf allen 3 x Servern die Datei ausgeführt wird oder auf
einem bestimmten? Oder beides?
durch das Script soll quasi gefiltert werde, von welchem Server die Datei gestartet wird. Sprich der Computer in Deutschland soll natürlich die Datei vom Deutschen Server starten, der Computer aus Frankreich natürlich die Datei vom Frankreich Server....

Gruß
Bitte warten ..
Mitglied: SaschaRD
LÖSUNG 20.12.2013, aktualisiert 23.12.2013
durch das Script soll quasi gefiltert werde, von welchem Server die Datei gestartet wird. Sprich der Computer in Deutschland soll
natürlich die Datei vom Deutschen Server starten, der Computer aus Frankreich natürlich die Datei vom Frankreich
Server....
Also wird das Loginskript von unterschiedlichen Computer ausgeführt und nicht von einem zentralen?
Die Versionsprüfung ist wofür gedacht?

PC FR führt Datei für Server FR aus.
PC AU Datei für Server AU aus.
PC DE Datei für Server DE aus.
Nur so oder darf PC DE auch die Datei von FR & AU ausführen?
Bitte warten ..
Mitglied: schmitzi
20.12.2013, aktualisiert um 21:39 Uhr
Hi, eigentlich ganz einfach:

das Problem ist dass Deine Bedingung

IF "%ipaddress%"=="%ipaddress:"xxx.xxx.105"=%"

IMMER zutrifft.

Deshalb hat er bei Deinem allerersten Versuch auch immer den 1. getroffen, also GERMANY,
(und ist wegen des GOTOS da ausgestiegen)

und beim letzten Versuch immer AUSTRIA, weil die GOTOS fehlen und er alle 3 (zutreffenden) Abfragen
durchläuft und die letzte halt gilt.

Also -> an der IF-Zeile arbeiten :O)

Kleine Hilfe:

IF %ipaddress:~8,-4%==101 ( blabla

SO sollte es gehen, und lass die GOTOs WEG, die brauchst Du (dann) gar nicht.


Gruss
RS
Bitte warten ..
Mitglied: Endoro
LÖSUNG 20.12.2013, aktualisiert 23.12.2013
Mein Vorschlag:
01.
IF NOT "%ipaddress%"=="%ipaddress:xxx.xxx.xxx.101=%" set "server=GERMANY\public\TIAudit"&ECHO GERMANY 
02.
IF NOT "%ipaddress%"=="%ipaddress:xxx.xxx.xxx.102=%" set "server=FRANCE\public\TIAudit"&ECHO FRANCE 
03.
IF NOT "%ipaddress%"=="%ipaddress:xxx.xxx.xxx.103=%" set "server=AUSTRIA\public\TIAudit"&ECHO AUSTRIA 
04.
IF NOT DEFINED server ECHO Uups! Server for %ipaddress% not found.&PAUSE
Es geht auch noch mit Forschleifen, Zeigern und hastdunichtgesehen...
lg.
Bitte warten ..
Mitglied: caschopl
23.12.2013 um 08:27 Uhr
Hallo Sascha,

Genau,
alle PC´s die im Netzwerk xxx.xxx.101.xxx sollen nur die Datei vom Server im Netzwerk xxx.xxx.101.xxx ausführen, usw.

Die Versionsprüfung ist eigentlich gedacht, damit das ganze nur auf Windows7 und 8 läuft. Ich weiß da ist auch noch die XP abfrage drin.... (muss ich dann noch löschen)

Gruß
Carsten
Bitte warten ..
Mitglied: caschopl
23.12.2013 um 08:30 Uhr
Hallo Endoro,
danke für den Tipp, aber ich brauch ja nicht die abfrage auf die ip adresse xxx.xxx.xxx.101 sondern es geht um die Newzwerk adresse xxx.xxx.101.xxx.

Alle PC´s die im Netzwerk xxx.xxx.101.xxx sollen nur die Datei vom Server im Netzwerk xxx.xxx.101.xxx ausführen, usw.

LG
Carsten
Bitte warten ..
Mitglied: Endoro
LÖSUNG 23.12.2013, aktualisiert um 13:25 Uhr
Hey Carsten,
dann kürze den Vergleichs-IP Ausdruck um ein Oktett: xxx.xxx.101 usw.
lg.
Bitte warten ..
Mitglied: caschopl
23.12.2013 um 13:24 Uhr
Hallo Endoro,
super ich glaube jetzt gehts so wie ich es mir vorstelle. Vielen Danke für deine Hilfe.

@SaschaRD, auch die vielen Dank.

Frohe Weihnachten und einen Guten Rutsch.

Liebe Grüße

Carsten
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
E-Mail
gelöst Falsche SMTP Server IP Adresse (6)

Frage von laster zum Thema E-Mail ...

LAN, WAN, Wireless
gelöst Aus dem Heimnetzwerk (Fritzbox) auf VNC Server mit fester IP-Adresse zugreifen? (3)

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

LAN, WAN, Wireless
gelöst TP-Link WA501G als Client einrichten - Keine IP Adresse wir bezogen (14)

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

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...