ฉันจะรู้ได้อย่างไรว่า OS X เชื่อมต่อกับเครือข่าย VPN จากบรรทัดคำสั่งหรือไม่


12

ฉันจะรู้ได้อย่างไรว่า OS X เชื่อมต่อกับเครือข่าย VPN จากบรรทัดคำสั่งหรือไม่

โดยทำงานifconfigโดยไม่มีข้อโต้แย้งใด ๆ เมื่อฉันเชื่อมต่อฉันเห็นว่ามีutun0อินเทอร์เฟซที่ดูเหมือนเป็นการเชื่อมต่อ VPN เมื่อฉันตัดการเชื่อมต่อมันจะหายไป

ฉันเชื่อว่าฉันสามารถใช้สิ่งนี้เพื่อตรวจสอบสตริงutun0และนับเหตุการณ์ที่เกิดขึ้น:

ifconfig | grep -c utun0

แต่มีวิธีที่ง่ายกว่าหรือมีประสิทธิภาพมากกว่าในการตรวจสอบเรื่องนี้หรือไม่? หากutun0เป็นอุปกรณ์หรือแม้กระทั่งอุปกรณ์หลอกฉันไม่ควรตรวจสอบว่ามีอุปกรณ์ดังกล่าวอยู่:

if [ -a '/dev/utun0' ]

น่าเสียดายที่ฉันไม่เห็นการเปลี่ยนแปลงใด ๆ ในไดเรกทอรีนั้นเมื่อทำการเชื่อมต่อและยกเลิกการเชื่อมต่อฉันเพิ่งเห็น/dev/tun0ผ่าน/dev/tun15และฉันทำไม่ได้catแม้แต่กับsudo...

มีวิธีที่ง่ายกว่าในการบอกว่าฉันมีการเชื่อมต่อ VPN หรือไม่?


VPN ประเภทใด ในตัวคุณกำหนดค่าในการตั้งค่าระบบ ?
Daniel Beck

@DanielBeck ใช่
CWD

คำตอบ:


10

คุณสามารถใช้คำสั่ง scutil ได้เช่นเดียวกับ Mountain Lion 1

ตัวอย่างเช่น:

$ scutil --nc list | grep Connected

สำหรับความช่วยเหลือเพิ่มเติมโดยละเอียดคุณสามารถดูman pageหรือเรียกใช้:

$ scutil --nc help

เชิงอรรถ:

  1. ฉันไม่ทราบคำสั่งนี้มีอยู่ในเวอร์ชันของ OSX ก่อนหน้า Mountain Lion แต่ฉันอาจผิด

0

เมื่อคุณกำหนดอินเทอร์เฟซผ่านการตั้งค่าระบบวิธีที่ง่ายที่สุดในการดำเนินการนี้คือการใช้ AppleScript นี่เป็นตัวอย่างข้อมูลที่จะทำสิ่งที่คุณต้องการทำ:

# Get the major version number. Mavericks changes the way things are done.
set osversion to do shell script "sw_vers 2>/dev/null | awk '/ProductVersion/ { print $2    }' | cut -f 2 -d ."
if osversion is less than 9 then
    set vpntype to 10
else
    set vpntype to 11
end if
try
    tell application "System Events"
        tell current location of network preferences
            set vpnservice to (name of first service whose kind is vpntype) as string
            set myConnection to the service vpnservice
            if myConnection is not null then
                if current configuration of myConnection is not connected then
                    return "Not Connected"
                else
                    return "Connected"
                end if
            end if
        end tell
    end tell
on error error_message
    return error_message
    error number -128
end try

บันทึกสิ่งนี้เป็นสคริปต์ที่ใดที่หนึ่ง (และให้แน่ใจว่าคุณบันทึกเป็นไฟล์สคริปต์!)

เมื่อใดก็ตามที่คุณต้องการเรียกใช้ให้ใช้คำสั่ง: osascript /path/to/script.scpt

หรือสร้างนามแฝงที่มีประสิทธิภาพ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.