web-dev-qa-db-ja.com

OS XがVPNネットワークに接続されているかどうかをコマンドラインから確認するにはどうすればよいですか?

OS XがVPNネットワークに接続されているかどうかをコマンドラインから確認するにはどうすればよいですか?

接続時にifconfigを引数なしで実行すると、VPN接続のように見えるutun0インターフェイスがあることがわかります。切断すると消えます。

文字列utun0をチェックして出現回数をカウントするには、次のようなものを使用できると思います。

ifconfig | grep -c utun0

しかし、これを確認するより簡単またはより効果的な方法はありますか? utun0がデバイスまたは疑似デバイスである場合、次のようなものでそれが存在するかどうかを確認できませんか?

if [ -a '/dev/utun0' ]

残念ながら、接続したり切断したりしても、そのディレクトリの変更は表示されません。/dev/tun0から/dev/tun15までが表示され、catを使用してもSudoできません。

VPN接続があるかどうかを確認する簡単な方法はありますか?

12
cwd

また、マウンテンライオンの時点で1、scutilコマンドを使用します。

例えば:

$ scutil --nc list | grep Connected

詳細なヘルプが必要な場合は、 man page を参照するか、次を実行してください。

$ scutil --nc help

脚注:

  1. Mountain Lionより前のバージョンのOSXにこのコマンドが存在することは知りませんが、間違っている可能性があります。
10
encoded

システム環境設定でインターフェイスを定義しているので、これを行う簡単な方法は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

または、それを実行するエイリアスを作成します。

0
Alex Plumb