เป็นไปได้ไหมที่จะเริ่มต้นไคลเอ็นต์ windows openvpnเพื่อให้เชื่อมต่อโดยใช้ config ที่กำหนดไว้ล่วงหน้า (.ovpn) โดยการส่งอาร์กิวเมนต์ของโปรแกรมโดยใช้คำสั่ง หรือระบุข้อโต้แย้งในทางลัดเมื่อเปิดจากทางลัดหน้าต่าง ฯลฯ
เป็นไปได้ไหมที่จะเริ่มต้นไคลเอ็นต์ windows openvpnเพื่อให้เชื่อมต่อโดยใช้ config ที่กำหนดไว้ล่วงหน้า (.ovpn) โดยการส่งอาร์กิวเมนต์ของโปรแกรมโดยใช้คำสั่ง หรือระบุข้อโต้แย้งในทางลัดเมื่อเปิดจากทางลัดหน้าต่าง ฯลฯ
คำตอบ:
แก้ไขมันดังต่อไปนี้:
จาก windows command prompt-
นี่จะเป็นการเริ่มต้นไคลเอ็นต์ opn vpn gui ที่เชื่อมต่อกับการเชื่อมต่อที่ระบุในการกำหนดค่าโดยตรง
โปรดทราบว่าหากopenvpn-gui.exe
คำตอบนั้นเริ่มต้นแล้วคำตอบจะไม่ทำงาน ให้ความสนใจไปที่: เรียกใช้ส่วนจากไฟล์ชุดเล็ก ๆ ที่ฉันทำเพื่อเริ่มการเชื่อมต่อ openVPN โดยอัตโนมัติเมื่อไม่ได้อยู่ที่บ้าน:
rem This script is fired from Task Scheduler (using Custom Event filter) when I am NOT at home (not connected to home network)
rem so check if my home NAS is already pingable, because maybe old/previous OpenVPN connection is still open
rem if not then start OpenVPN connection
rem if yes than do nothing
ping -n 1 192.168.10.100 > testping.txt
findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" testping.txt
IF ERRORLEVEL 1 goto run
rem do nothing because NAS is pingable
goto finished
:run
rem be sure to kill previous (closed) openvpn process so reconnecting actually works!
taskkill.exe /F /IM openvpn.exe
taskkill.exe /F /IM openvpn-gui.exe
timeout 1
start /b "" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect nas_at_home.ovpn
:finished
นอกเหนือจากคำตอบของ Flowerking คุณสามารถระบุโฟลเดอร์ที่ไฟล์ ovpn ของคุณอยู่อาจจะเก็บข้อมูลคีย์ส่วนตัวในพื้นที่ผู้ใช้ เพื่อที่จะใช้config_dir
:
openvpn-gui.exe --connect "client.ovpn" --config_dir "C:\Users\Foo\Documents\protected_crypto_data"
นี่เป็นตัวอย่างง่ายๆหากคุณต้องการเชื่อมต่อ VPN มากกว่าหนึ่งตัว:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect vpn1.ovpn --connect vpn2.ovpn
มันจะไม่ทำงานหากopenvpn-gui.exe
กำลังทำงานอยู่
ไม่แน่ใจว่าสิ่งนี้ถูกเพิ่มเมื่อเร็ว ๆ นี้ แต่มีตัวเลือก "- คำสั่ง" ที่สามารถใช้ในการส่งคำสั่งไปยังอินสแตนซ์ gui ที่ทำงานอยู่
ดังนั้นตอนนี้คุณสามารถทำได้
openvpn-gui.exe --command connect config.ovpn
ดูตัวเลือกสำหรับ openvpn-gui.exe โดยไปที่บรรทัดคำสั่งและเรียกใช้
openvpn-gui.exe --help
ฉันมีปัญหาเดียวกันและต้องการสคริปต์เพื่อไม่เปิด UI อีกครั้งหากมีการเชื่อมต่อแล้วและรอให้การเชื่อมต่อเสร็จสิ้น
ฉันหาทางออกที่ดีไม่ได้ฉันก็เลยเขียนเอง มันอยู่ที่นี่ในกรณีที่เป็นประโยชน์กับคนอื่น ๆ :
https://www.pretentiousname.com/miscsoft/index.html#ConnectOpenVPN
Windows Vista ขึ้นไป ฟรี; รวมถึงซอร์สโค้ด C ++
(นอกจากนี้ยังมีเครื่องมือที่คล้ายกันและเก่ากว่าสำหรับไคลเอนต์ VPN ในตัวของ Windows)
ตัวอย่างการใช้งานด้วยสวิตช์ / verbose ซึ่งแสดงผลข้อมูลโดยละเอียดเกี่ยวกับสิ่งที่กำลังทำ:
C: \> ConnectOpenVPN.exe / เชื่อมต่อ / อะแดปเตอร์ "OpenVPN" / config "MyVPN.ovpn" ConnectOpenVPN: กำลังตรวจสอบสถานะของอะแดปเตอร์เครือข่าย "OpenVPN" ... ConnectOpenVPN: ไม่ได้เชื่อมต่ออะแดปเตอร์เครือข่าย "OpenVPN" ConnectOpenVPN: กำลังทำงาน: "C: \ Program Files \ OpenVPN \ bin \ openvpn-gui.exe" - คำสั่งเชื่อมต่อ "MyVPN.ovpn" ConnectOpenVPN: กำลังรอให้ OpenVPN GUI ปรากฏขึ้น ... ConnectOpenVPN: พบ OpenVPN GUI ConnectOpenVPN: กำลังรอ OpenVPN GUI เพื่อปิด ... ConnectOpenVPN: OpenVPN GUI ปิด ConnectOpenVPN: กำลังรอ / ยืนยันการเชื่อมต่อ VPN อยู่ ... ConnectOpenVPN: เชื่อมต่อแล้ว ConnectOpenVPN: การเชื่อมต่อการกระทำ finshed
ฉันหวังว่ามันจะเป็นประโยชน์กับคนอื่น ๆ
คุณสามารถปรับปรุงคำตอบของ @Jan ได้โดยเปลี่ยน:
ping -n 1 192.168.10.100 > testping.txt
findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" testping.txt
ถึง:
ping 192.168.10.100 -n 1 | findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" && goto :finished
วิธีนี้คุณไม่จำเป็นต้องสร้างไฟล์ชั่วคราว