WinFuture-Forum.de: Batch Beste Zugriffszeit Ermitteln - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Batch Beste Zugriffszeit Ermitteln Beste Zugriffszeit von zwei unterschiedlichen Systemen ermitteln


#1 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 08. Januar 2008 - 17:48

Hallo Community,

ich stehe vor einem kleinen Problem bei dem mir keine Lösung einfällt.

Ich repliziere zwei File Server, die an unterschiedlichen Standorten stehen, über das Microsoft Modul DFS (Distributed File System) miteinander. Dies ist bereits eingerichtet und funktioniert einwandfrei. DFS repliziert nicht nur die Dateien, Ordner und Sicherheitseinstellungen sondern auch die Freigaben und so kommen wir zu meinem Problem.

Die Verteilung der Netzlaufwerke funktioniert über einfache Befehle (net use ). Da sich allerdings die verschiedenen User nicht immer an den gleichen Standorten einwählen. Ergeben sich nun 3 Möglichkeiten der einwahl.

1. Einwahl über eine VPN-Connection
2. Einwahl über Standort a
2. Einwahl über Standort b

ich möchte nun ein Script entwickeln, dass die Server a und b pingt und denjenigen mit der niedrigsten Zugriffzeit in eine Variable schreibt, damit ich diese in dem Befehl net use verwenden kann

Mit fehlen hier schon die Grundideen , da man in der Konsole leider den ping Befehl in keine Variable schreiben kann.

Any Ideas ?

Vielen Dank für eure Hilfe !!

Gruß

ohn

Dieser Beitrag wurde von ohn bearbeitet: 08. Januar 2008 - 17:49

0

Anzeige



#2 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 14. Januar 2008 - 09:30

any ideas ?
0

#3 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Januar 2008 - 10:34

Schau dir mal die for-schleife an "for /?". Damit sollte es dir möglich sein, die Resultate von ping in entsprechende Variablen zu lenken.
0

#4 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.433
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 18. Januar 2008 - 00:30

was hälst du von einer consolenanwendung z.b. in vb.net. wäre halt eine exe datei

Dieser Beitrag wurde von bLaCkRaBbIt bearbeitet: 18. Januar 2008 - 00:36

0

#5 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.433
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 19. Januar 2008 - 13:43

ich held hatte mal wieder aus versehen in den falschen thread gepostet. hier was ich geschrieben hatte:


hier der quelltext für eine consolenanwendung:

Imports System.Net.NetworkInformation

Module Module1
	Sub Main()
		If (New Ping).Send("server1").RoundtripTime > (New Ping).Send("server2").RoundtripTime Then
			Shell("hier den net use befehl für server1", AppWinStyle.Hide, True)
		Else
			Shell("hier den net use befehl für server2", AppWinStyle.Hide, True)
		End If
	End Sub
End Module



falls du kein visual studio hast oder dich mit vb.net nicht auskennst, dann gib mir die adresse von server1,server2 und den net use befehl für server1 und server2, dann kompilier ich dir das.

Dieser Beitrag wurde von bLaCkRaBbIt bearbeitet: 19. Januar 2008 - 13:46

0

#6 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 19. Januar 2008 - 13:43

Hi,

nachfolgendes Batch-Skript, führt einen Ping auf %SERVER% aus und schreibt den Mittelwert des Pings in die Variable %MITTELWERT%.

Zur genauen Funktionsweise:
In For wird der Befehl ping %SERVER% | find "Mittelwert" ausgeführt, d.h. ein Ping, der nur die letzte Zeile mit dem Mittelwert ausgibt, z.B.:
	Minimum = 61ms, Maximum = 87ms, Mittelwert = 67ms

Das For zerlegt diese Zeile an den = und speichert den vierten Wert, also im Beispiel ' 67ms', in die Variable %MITTELWERT% (über %i). Danach werden noch die ms und das Leerzeichen davor entfernt.

@echo OFF
SET SERVER=www.google.de
For /F "tokens=4 Delims=^=" %%i in ('ping %SERVER%^| find "Mittelwert"') Do @Set MITTELWERT=%%i
set MITTELWERT=%MITTELWERT:ms=%
set MITTELWERT=%MITTELWERT:~1%
echo %MITTELWERT%


Ich hoffe, das hilft weiter.

Gruß,
Stefan
0

#7 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 28. Januar 2008 - 17:31

vielen Dank für deine ANtwort DieWie.

leider verstehe ich nicht ganz die funktionsweise deines Scripts. Ich bekomme einen Rückgabewert von i anstatt eine Zahl.
0

#8 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 28. Januar 2008 - 18:14

Hi,

kannst du bitte einmal eine Ausgabe von ping www.google.de posten? Ich habe dieses Skript unter der deutschen Version von Windows Vista geschrieben und hier läuft es problemlos.

Gruß,
Stefan
0

#9 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 29. Januar 2008 - 09:14

Ping www.l.google.com [64.233.183.99] mit 32 Bytes Daten:

Antwort von 64.233.183.99: Bytes=32 Zeit=16ms TTL=243
Antwort von 64.233.183.99: Bytes=32 Zeit=15ms TTL=243
Antwort von 64.233.183.99: Bytes=32 Zeit=16ms TTL=243
Antwort von 64.233.183.99: Bytes=32 Zeit=15ms TTL=243

Ping-Statistik für 64.233.183.99:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 15ms, Maximum = 16ms, Mittelwert = 15ms

Ich bekomme als Fehlermeldung:
"%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.

_____________________________________________
For /F %i in ('ping google.de') Do @echo %i
ECHO ist ausgeschaltet (OFF).
Ping
ECHO ist ausgeschaltet (OFF).
Antwort
Antwort
Antwort
Antwort
ECHO ist ausgeschaltet (OFF).
Ping-Statistik
Pakete:
Ca.
Minimum
_____________________________________________


Vielen Dank für deine Hilfe !!

Dieser Beitrag wurde von ohn bearbeitet: 29. Januar 2008 - 10:34

0

#10 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 29. Januar 2008 - 18:40

Nur um sicher zu gehen, du hast schon mein Skript in eine .bat Datei kopiert und dieses dann aufgerufen, oder? Ich kann leider keinen Fehler finden.

Gruß,
Stefan
0

#11 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 30. Januar 2008 - 10:19

ja klar. ich bekomme allerdings keine Rückgabe der Variablen.
0

#12 Mitglied ist offline   martin_mt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 515
  • Beigetreten: 19. August 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 30. Januar 2008 - 10:47

und du hast die batchdatei auch nicht ping.bat genannt ?

sry für die blöde frage, mir wärs fast so gegangen ....
0

#13 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 30. Januar 2008 - 10:59

Die Server sind alle 2003 R2, richtig? Also du nimmst DFS Replication zum replizieren? Warum nimmst dann nicht auch die DFS Namespaces, dann haste nen universellen Namen für die Freigabe (\\domänenname\freigabename statts \\servername\freigabename) und Windows ermittelt durch die Standardorte anhand der Subnetzmasken, welcher am nächsten ist. Besser noch: Fällt einer aus, nimmt er den nächsten, auch wenns dann langsamer ist.
Also unnötig, hier mit blöden bat-Skripten das zu verkomplizieren.

Vorraussetzung ist natürlich, du hast ne Domäne am laufen.

Falls die Server alle außerdem DCs sind, kannste auch mit \\%LOGONSERVER%\Freigabename arbeiten, wenn du die DFS Namespaces nicht verwenden möchtest.
0

#14 Mitglied ist offline   ohn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 60
  • Beigetreten: 21. März 07
  • Reputation: 0

geschrieben 30. Januar 2008 - 14:28

Die Server sind leider nicht alles R2. DFS wurde mit 2003 eingeführt und dort funktioniert die Verteilung nicht wirklich sauber. Ich hatte des öfteren den Fall, dass der Falsche Server im Zugriff war.

Die Lösung für das DOS Problem:
Wir hatten einige Systemvariablen geloescht die wohl fuer dieses programm relevant waren.
0

#15 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 30. Januar 2008 - 15:58

DFS gabs schon viel früher, sogar schon für NT4 als Addon, die Replikation vor 2003 R2 ist aber vor allem im Zweigstellenbetrieb absolut nicht zu empfehlen. Ich würde das alles auf 2003 R2 aufrüsten (oder 2008 in ein paar Wochen), falls das Budget das hergibt, weil die Gefahr von Verlust von Daten einfach ohne viel zu groß ist.

Ansonsten: wenn es überall Server gibt, aber die nicht gleichzeitig DCs immer sind, würde ich nicht den ping auswerten, sondern anhand von Subnetzadresse des Client-PCs entscheiden.

Z.B.:

ipconfig | find "192.168.123." 1>nul 2>nul
if not errorlevel 1 set SERVER=SERVER1
ipconfig | find "192.168.150." 1>nul 2>nul
if not errorlevel 1 set SERVER=SERVER2
ipconfig | find "192.168.151." 1>nul 2>nul
if not errorlevel 1 set SERVER=SERVER3

net use M: \\%SERVER%\Daten

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0