bkrieg
Goto Top

Automatischer Start einer VPN Verbindung

Hallo zusammen,

ich benötige Hilfe..

Ich habe einen gateprotect VPN Client, dieser soll immer Starten wenn ich nicht im Netzwerk bin-
Hierzu habe ich einen Ping auf 192.168.1.2 (Server) wird der nicht gefunden soll das Programm starten und minimiert werden (als Tray).

Im Autostart Ordner habe ich eine Verknüpfung zur Datei: VPN-START-1.vbs
Set WshShell = CreateObject("WScript.Shell")  
cmds=WshShell.RUN("VPN-START-2.bat", 0, False)  
Set WshShell = Nothing

VPN-START-2.bat enthält:
@echo off
ping -n 1 192.168.1.2
if errorlevel 1 goto Programm
if errorlevel 0 goto ENDE

:Programm
MS-BEK1.gpcs

:ENDE

MS-BEK1.gpcs ist die Zertifikatsdatei die bei Start den VPN Client.exe öffnet und automatisch die Verbindung ohne Knopfdruck herstellt.
Wie kann ich das optimieren bzw sagen das er das ganze minimiert / versteckt startet in der Batchdatei.

Vielen Dank im Voraus

Content-Key: 336832

Url: https://administrator.de/contentid/336832

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: Kraemer
Kraemer 04.05.2017 um 12:14:26 Uhr
Goto Top
Moin,

keine Ahnung wofür du das vbs brauchst...

Für das andere: Uvnc viewer minimiert starten

Gruß
Mitglied: Pedant
Pedant 04.05.2017 aktualisiert um 12:32:50 Uhr
Goto Top
Hallo BKrieg,

Zitat von @BKrieg:
Wie kann ich das optimieren bzw sagen das er das ganze minimiert / versteckt startet in der Batchdatei.
Wie Du "versteckt" startest weißt Du ja schon (siehe VPN-START-1.vbs).
Minimiert kannst Du so starten:
Schreibt statt MS-BEK1.gpcs das hier:
start /min "VPN" /d "C:\Program Files (x86)\VPN" "VPN Client.exe" MS-BEK1.gpcs
Das Arbeitsverzeichnis (hinter /d) und den Namen der EXE müsstest Du noch anpassen. "VPN" ist hier nur der Fenstertitel und der ist wahlfrei.
Ohne Deinen VPN-Client zu kennen, vermute ich, dass er auch gestartet werden kann, wenn Du ihn direkt aufrufst und die gpcs-Datei als Parameter übergibst. Gegebenenfalls müsstest Du die genaue Syntax dafür nachsehen.
Ob das dann im Tray minimiert, hängt von der EXE ab. start /min minimiert erstmal nur in der Taskleiste.

Alternativ kann man eine Verknüpfung erstellen und in deren Eigenschaften "Ausführen: Minimiert" einstellen.
Wenn man dann statt des Programms/Batches die Verknüpfung startet, startet das verknüpfte Objekt minimiert.
start "meine Verknüpfung.lnk"
Verknüpfungen erhalten generell die Extension "lnk", die im Explorer aber nicht angezeit wird.
Im Zweifelsfall ein dir oder dir /a-d /b *.lnk ausführen, um dem korrekten, vollständigen Namen der Verknüpfung zu sehen.

Zitat von @BKrieg:
dieser soll immer Starten wenn ich nicht im Netzwerk bin
Ohne Netzwerk auch kein VPN.
Du meinst also wenn Du in einem anderen Netzwerk bist, als das, im dem der Server (192.168.1.2) sich befindet.
Der Ping auf den Server würde auch scheitern, wenn Du in keinem Netzwerk bist, aber das VPN dann ebenfalls.
Du könntest statt des pings die Ausgabe von ipconfig auswerten.
Ohne Netzwerk wird für den/die Adapter keine IP ausgegeben und in "fremden" Netzwerken eine (wahscheinlich) andere IP als im eigenen Netzwerk. Hast Du im eigenen Netzwerk eine feste IP oder bekommst Du eine per DHCP?
Anders gefragt, was spuckt denn ipconfig in der einen und in der anderen Situation aus?

Dein Skript wird nur einmal beim Systemstart ausgeführt.
Reicht Dir das oder sollte es bei jedem Netzwerkwechsel automatisch anspringen und prüfen, ob eine VPN-Verbindung aufgebaut werden sollte?

Gruß Frank

Nachtrag:
Was das minimiert angeht, war Kraemer schneller als ich.
Ich sollte mir angewöhnen einen Beitrag nochmal neuzuladen, bevor ich bei meiner Antwort auf senden klicke.
Mitglied: BKrieg
BKrieg 05.05.2017 um 22:01:25 Uhr
Goto Top
Vielen Dank für eure Mithilfe!

Die Lösung sah nun so aus:
WScript.sleep 10000
Set WshShell = CreateObject("WScript.Shell")  
res = WshShell.RUN("ping -n 1 192.168.1.2", 0, True)  
If res > 0 Then
	WshShell.RUN "Zertifikat.gpcs", 0, False  
End If
Mitglied: 132895
132895 05.05.2017 aktualisiert um 23:24:55 Uhr
Goto Top
Den Errorlevel von ping kann man nicht auswerten um zu bestimmen ob eine Verbindung möglich ist! Dieser sagt nicht aus ob ein Host erreichbar ist oder nicht, das weiß jeder IT-Azubi face-wink

Gruß
Mitglied: BKrieg
BKrieg 05.05.2017 um 23:32:59 Uhr
Goto Top
Ok aber komischerweise funktioniert es.
Wenn unser Server mit 192.168.1.2 nicht anpingbar ist, das heißt man nicht im Firmen-Netzwerk ist, soll das Programm starten. Innerhalb des Netzwerk startet es nicht.

Also eigentlich funktioneller Fehler.
Mitglied: 132895
132895 05.05.2017 aktualisiert um 23:39:04 Uhr
Goto Top
Purer Zufall weil die Route fehlt. Kannst du hier in diversen Batch-Threads nachlesen.
Nimm besser gleich Powershell und Test-Connection
https://ss64.com/ps/test-connection.html
Mitglied: Pedant
Lösung Pedant 06.05.2017 aktualisiert um 13:12:06 Uhr
Goto Top
Hallo BKrieg,

Zitat von @BKrieg:
Wenn unser Server mit 192.168.1.2 nicht anpingbar ist, das heißt man nicht im Firmen-Netzwerk ist
Dieser Schluss ist doch bestenfalls ein Indiz und weit entfernt von einem Beweis.


False Negativ

Du hast Dein Laptop noch nicht ins Netzwerk gestöpselt, also 192.168.1.2 nicht erreichbar, also unterwegs


False Positiv

Du bist zu Gast in einem 192.168.1.0/24-Netzwerk, was nicht gerade ein exotisches Netzwerk ist.
Irgendein anderer Rechner mit der IP 192.168.1.2 beantwortet Deinen Ping.


Mein Vorschlag (ausbaubar)

1. Du solltest verlässlich Prüfen, ob Dein Netzwerk auch tatsächlich Dein Netzwerk ist.
Dazu fallen mir zwei Varianten ein:

a) Du prüfst auf eine dafür geeignete Datei im Netzwerk:
@echo off
if exist \\MeinServer\Freigabe\Ich-bin-zuhause.txt echo Ja das ist mein Server

b) Du prüfst nicht nur die IP, sondern kontrollierst auch, ob dahinter die erwartete MAC-Adresse steckt.
@echo off
set SuchMAC=0a-1b-2c-3d-4c-5e
set SollIP=192.168.1.2
arp -d %SollIP%
ping %SollIP% > nul
for /f "tokens=1,2" %%a in ('arp -a ^| findstr "%SuchMAC%"') do (
  set "IstIP=%%a"
)
echo %IstIP% = %SollIP%
if "%IstIP%"=="%SollIP%" echo Ja das ist mein Server
(Anmerkung: Gruß an Friemler)

2. Wenn Du feststellst, dass Du nicht in Deinem Netzwerk bist, dann solltest Du noch prüfen, ob Du überhaupt in einem Netzwerk bist und dort auch Internetzugriff hast, denn wenn nicht wird eine VPN-Verbindung nicht funktionieren und sollte daher gar nicht erst gestartet werden.
Falls Dein VPN-Server auf externe Pings antwortet, dann
ping externe-IP-des-VPN-Servers
andernfalls
ping example.com
Anschließende Auswertung

Bei 1. und 2. sind False Positiv ausreichend unwahrscheinlich.
False Negativ sind aber durchaus noch möglich.

Gruß Frank

EDIT: Dem Code bei 1.b) hab ich arp -d %SollIP% hinzugefügt, damit das anschließende Ping im Erfolgsfall eine frischen Eintrag erzeugt und bei Misserfolg nicht eventuell noch ein alter Eintrag vorhanden ist.
Mitglied: 132895
132895 06.05.2017 aktualisiert um 13:07:27 Uhr
Goto Top
Ich würde es eher so machen:
Auf dem internen Firmen-DNS-Server einen dedizierten A-Record anlegen (z.B. internTest.domain.tld) der sich nur Firmenintern auflösen lässt. Dann reicht ein simples Resolve-DNSName/nslookup.

Die selbe Methode nutzt übrigens DirectAccess um festzustellen ob der Client intern/extern ist.