কমান্ড লাইন (ওএসএক্স) থেকে কনফিগার করা ভিপিএন শুরু করুন


48

আমার ম্যাকে আমার দুটি ভিপিএন কনফিগারেশন রয়েছে এবং আমি যখন আমার মেশিনে প্রবেশ করি তখন কনসোল থেকে সেগুলি শুরু করতে সক্ষম হতে চাই।

আমি কমান্ডটি পেয়েছি networksetupযা আমাকে সংযোগগুলি কনফিগার করার অনুমতি দেয়, তবে আমি যতক্ষণ না বলতে পারি বাস্তবে কোনওটি শুরু করতে পারি না।

সিংহ ব্যবহার


উত্তর:


41

নতুন MacOS সংস্করণ জন্য, একটি খুব সহজ কমান্ড ব্যবহার করা যাবে যেমন উত্তর নিচে দেখানো, যেমন এই এক (এটা একটি +1 দিতে!)।

তোমার যা দরকার তা হল:

 networksetup -connectpppoeservice "UniVPN"

একমাত্র সমস্যা হ'ল আপনি এই আদেশটি ব্যবহার করে সংযোগ বিচ্ছিন্ন করতে পারবেন না।


আপনি নিজের পছন্দের ভিপিএন পরিষেবাদিগুলির সাথে সংযোগ করতে অ্যাপলস্ক্রিপ্টও ব্যবহার করতে পারেন। আমরা শেল ফাংশনগুলি ব্যবহার করব, যা কমান্ড লাইন থেকে পাওয়া গেলে এটি লোড হয়ে যায়।

আপনার ~/.bash_profileবা ~/.profile(আপনি যা কিছু ব্যবহার করুন) এর জন্য নীচের ফাংশনগুলি যুক্ত করুন ।

আপনার কেবলমাত্র ভিপিএন সংযোগের নামটি নিজেরাই পরিবর্তন করতে হবে, কারণ এটি নেটওয়ার্ক পছন্দ হিসাবে প্রদর্শিত হয় । আমি এখানে আমার বিশ্ববিদ্যালয়ের ভিপিএন ব্যবহার করেছি।

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি বিভিন্ন কাজের জন্য এটি করতে চান তবে আপনি ফাংশনগুলির নামও পরিবর্তন করতে পারেন। যুক্তি ব্যবহার করে এটি সংক্ষিপ্ত করা সম্ভব হতে পারে তবে এটি ঠিক এইভাবে কাজ করে। আমি এটি স্নো চিতাবাঘে পরীক্ষা করেছি (তবে চিতাবাঘ এবং সিংহকেও কাজ করা উচিত)।

একবার আপনি ফাংশনগুলি যুক্ত করার পরে, টার্মিনালটি পুনরায় লোড করুন vpn-connectএবং vpn-disconnectযথাক্রমে তাদের সাথে এবং কল করুন ।


function vpn-connect {
/usr/bin/env osascript <<-EOF
tell application "System Events"
        tell current location of network preferences
                set VPN to service "UniVPN" -- your VPN name here
                if exists VPN then connect VPN
                repeat while (current configuration of VPN is not connected)
                    delay 1
                end repeat
        end tell
end tell
EOF
}

function vpn-disconnect {
/usr/bin/env osascript <<-EOF
tell application "System Events"
        tell current location of network preferences
                set VPN to service "UniVPN" -- your VPN name here
                if exists VPN then disconnect VPN
        end tell
end tell
return
EOF
}

বোল্ডার_রবির কোডে ব্যাকটিক্স রেখে এই ধরণের কাজ পেয়েছি। তবে আদর্শভাবে এটি ফিরে আসার আগে একটি কলব্যাকের জন্য অপেক্ষা করবে। আমার লক্ষ্য চালানো vpn-connect && git fetch && vpn-disconnect। আপনি কি মনে করেন এটি করার কোনও উপায় আছে?
মাইকেল ফরেস্ট

ভাল ধারণা. আমি আমার স্ক্রিপ্ট আপডেট করেছি ... এটি কেবল পরীক্ষা করে দেখে মনে হচ্ছে এটি কার্যকর হবে।
slhck

1
এটি সুস্পষ্ট হতে পারে তবে কেবল রেকর্ডের জন্য: মনে হচ্ছে এটি কাজ করার জন্য আপনার অবশ্যই একটি জিইউআই অধিবেশন খোলা দরকার। যখন আমি মেশিনে সক্রিয় একই ব্যবহারকারীর একটি জিইউআই অধিবেশন থাকাকালীন এসএসএইচ এর মাধ্যমে লগইন করি এবং অ্যাপলস্ক্রিপ্ট সম্পাদকের সাথে একটি অ্যাপ্লিকেশনটিতে রূপান্তরিত করে এবং এটি কাজ করে বলে কল করার পরে এটি vpn-connectএকটি থ্রো করে না। তবে যদি সেই ব্যবহারকারীর কোনও সক্রিয় জিইউআই অধিবেশন না থাকে তবে এসএসএইচ মাধ্যমে কল করার সময় একটি নিক্ষিপ্ত হয়। syntax error: Expected end of line but found identifier. (-2741)open vpn-connect.appLSOpenURLsWithRole() failed with error -10810
স্টিফান শ্মিট

56

আপনি কমপক্ষে সিংহ 1 এর মতো স্কিউটিল কমান্ডও ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, যদি আমার কাছে "ফু" নামে একটি ভিপিএন পরিষেবা থাকে তবে আমি এর মাধ্যমে সংযোগ করতে পারি:

$ scutil --nc start Foo

আমি একই নামের পতাকা ব্যবহার করে কোনও ব্যবহারকারী, পাসওয়ার্ড এবং গোপন নির্দিষ্ট করে বলতে পারি:

$ scutil --nc start Foo --user bar --password baz --secret quux

পরিষেবাটি এর মাধ্যমে সংযোগ বিচ্ছিন্ন করা যেতে পারে:

$ scutil --nc stop Foo

আরও বিস্তারিত সহায়তার জন্য, আপনি ম্যান পৃষ্ঠাটি দেখতে পারেন বা চালাতে পারেন:

$ scutil --nc help

হালনাগাদ

সংযোগ স্থাপন না হওয়া পর্যন্ত পোলে একটি দ্রুত স্ক্রিপ্ট যুক্ত করা (এরিক বি এর মন্তব্যের প্রতিক্রিয়া হিসাবে) in

#!/bin/bash

# Call with <script> "<VPN Connection Name>"

set -e
#set -x

vpn="$1"

function isnt_connected () {
    scutil --nc status "$vpn" | sed -n 1p | grep -qv Connected
}

function poll_until_connected () {
    let loops=0 || true
    let max_loops=200 # 200 * 0.1 is 20 seconds. Bash doesn't support floats

    while isnt_connected "$vpn"; do
        sleep 0.1 # can't use a variable here, bash doesn't have floats
        let loops=$loops+1
        [ $loops -gt $max_loops ] && break
    done

    [ $loops -le $max_loops ]
}

scutil --nc start "$vpn"

if poll_until_connected "$vpn"; then
    echo "Connected to $vpn!"
    exit 0
else
    echo "I'm too impatient!"
    scutil --nc stop "$vpn"
    exit 1
fi

পাদটিকা:

  1. এই কমান্ডটি কখন ওএসএক্স-এ যুক্ত করা হয়েছিল তা স্পষ্ট নয়, আমার এটি ম্যাভারিকসে রয়েছে এবং ব্যবহারকারী এরিক বি রিপোর্ট করেছেন যে এটি সিংহটিতে কাজ করে (10.7.5)।

সিংহটিতে এটি চেষ্টা করে (10.7.5) এবং এটি দুর্দান্ত কাজ করে। ম্যান পৃষ্ঠাগুলিতে কেবল নথিভুক্ত নয়। ধন্যবাদ!
এরিক বি।

ফিরে আসার আগে সংযোগটি সম্পূর্ণ না হওয়া পর্যন্ত অপেক্ষা করার জন্য স্কুটিল পেতে কোনও অপেক্ষা? সংযোগ স্থাপনের পরে আমার একটি স্ক্রিপ্ট চালানো দরকার, তবে স্কিউটিল খুব দ্রুত ফিরে আসে এবং সংযোগ স্থাপনের আগে নিম্নলিখিত কমান্ডটি কার্যকর করা হয়।
এরিক বি 19

@EricB। দ্রুত স্ক্রিপ্টের জন্য আমার আপডেটগুলি দেখুন।
এনকোড

ব্যবহারকারীর নাম বিকল্পটি হওয়া উচিত --user, না--username
রক্যালাইট

2
কোনও ধারণা কেন scutil --nc stop Foo(ইয়োসেমাইটে) কাজ করে না?
এফডট

26

সিংহের অধীনে এটি পরীক্ষা করা হয়নি তবে আমি কোনও সমস্যা ছাড়াই মাউন্টেন সিংহের নীচে নিম্নলিখিত কমান্ডটি ব্যবহার করছি:

networksetup -connectpppoeservice UniVPN

এই ইউটিলিটিটি '02-এ ফিরে যুক্ত করা উচিত কাজ করা উচিত।
এল বিকাশকারী

2
হ্যাঁ, আশ্চর্যরূপে এই পদ্ধতিটি কার্যকর হয় যদিও স্যুইচটি ভিপিএন পরিষেবাগুলির জন্য নয় তবে পিপিপিওই পরিষেবাগুলির জন্য, তবে সংযোগ বিচ্ছিন্নকরণ এইভাবে কাজ করে না।
স্টিফান শ্মিড্ট

এটি L2TP সঞ্চিত ভাগযুক্ত গোপনের সাথে কাজ করে, যখন scutilনা!
কনস্ট্যান্টিন সুভেরভ

এটি নিখুঁতভাবে কাজ করে, কারণ scutilকোনও সংরক্ষিত ডেটা গ্রহণ করে না, যা ব্যথা pain
ম্যাট ফ্লেচার

ওএস এক্স 10.13.5 এ আমার জন্য কাজ করেছেন!
ব্যবহারকারী 7391

0

এই নিফটি রুবি স্ক্রিপ্টটি তৈরি করতে আমি স্ল্যাক (যিনি স্পষ্টতই সোনার দেবতা) দ্বারা উপরের স্ক্রিপ্টটি ব্যবহার করেছি যা সমস্ত ধরণের জিনিসের জন্য ব্যবহার করা যেতে পারে

class SwitchIp

def go
  turn_off
  sleep 3
  turn_on
end

def turn_on
  `/usr/bin/env osascript <<-EOF
      tell application "System Events"
        tell current location of network preferences
            set VPN to service "StrongVPN" -- your VPN name here
            if exists VPN then connect VPN
      end tell
    end tell
  EOF` 
end

def turn_off
  `/usr/bin/env osascript <<-EOF
    tell application "System Events"
      tell current location of network preferences
            set VPN to service "StrongVPN" -- your VPN name here
            if exists VPN then disconnect VPN
      end tell
  end tell
 EOF`
end

end

0

আপনি networksetup -connectpppoeservice "myvpn"myvpn নামের একটি ভিপিএন সাথে সংযোগ করতে এবং মাইভিপিএন নামের ভিপিএন networksetup -disconnectpppoeservice "myvpn"থেকে সংযোগ বিচ্ছিন্ন করতে ব্যবহার করতে পারেন

এই কমান্ড লাইনগুলি ব্যবহার করার আগে আপনাকে সিস্টেম পছন্দসমূহ> নেটওয়ার্কে একটি সংযোগ ম্যানুয়ালি কনফিগার করতে হবে


0

ম্যাকোস 10.14.5 মোজাভেতে কাজ করে:

ভিপিএন সংযুক্ত করুন : @ স্লহকের উত্তর -> ব্যবহার করুন networksetup -connectpppoeservice "VPN Name"

ভিপিএন সংযোগ বিচ্ছিন্ন করুন : @ এনকোড করা উত্তর থেকে -> scutil --nc stop "VPN Name"

এটি আইপিএসইসি ভিপিএন-এর মাধ্যমে আমার এল 2 টি পি-র জন্য কাজ করেছে। আমি সিসকো আইপিএসইসি বা আইকেইভ 2 ভিপিএন পরীক্ষা করিনি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.