open a predefined VPN connection on Mac using ruby

Amazing, it seems that there is no simple way to open a predefined VPN connection with a terminal command. So after asking the search engine of my choice I found some applescript stuff to do this.

I have wrapped it in ruby such that I can use it now from my rake files.

class VpnOnMac

  def self.open(service)
    cmd=[]
    cmd < < "osascript <<-EOF"
    cmd << "tell application \"System Events\""
    cmd << "        tell current location of network preferences"
    cmd << "                set VPN to service \"#{service}\" -- your VPN name here"
    cmd << "                if exists VPN then connect VPN"
    cmd << "                repeat while (current configuration of VPN is not connected)"
    cmd << "                    delay 1"
    cmd << "                end repeat"
    cmd << "        end tell"
    cmd << "end tell"
    cmd << "EOF"

    cmd=cmd.join("\n")

    system(cmd)
  end


  def self.close(service)
    cmd=[]
    cmd << "osascript <<-EOF"
    cmd << "tell application \"System Events\""
    cmd << "        tell current location of network preferences"
    cmd << "                set VPN to service \"#{service}\" -- your VPN name here"
    cmd << "                if exists VPN then disconnect VPN"
    cmd << "        end tell"
    cmd << "end tell"
    cmd << "EOF"

    cmd=cmd.join("\n")

    system(cmd)
  end

end

with this, you can open your service e.g. by

VpnOnMac::open("my Vpn")

Neuer Kommentar

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.