ওএস এক্স-তে কোনও ভিপিএন-এর সাথে সংযুক্ত হওয়ার পরে আপনি কীভাবে স্বয়ংক্রিয়ভাবে স্ক্রিপ্টটি চালাতে পারেন?


6

আমি ওএস এক্স ১০.7.৩ এ ভিপিএন সংযোগটি কনফিগার করেছি, তবে যেহেতু যে নেটওয়ার্কটি আমি কর্পোরেট প্রক্সি ব্যবহারের সাথে সংযোগ করছি তার মধ্যে কাস্টম মাভেন সংগ্রহস্থল সার্ভার এবং অন্যান্য নেটওয়ার্ক-নির্দিষ্ট সেটিংস রয়েছে (উদাহরণস্বরূপ, রিমোট ড্রাইভ), আমি চাই ভিপিএন এর লগন / লগঅফ এ একটি স্ক্রিপ্ট চালান:

  • ম্যাভেন পরিবর্তন ~/.m2/settings.xmlতাদের ম্যাভেন রেপো দিকে নির্দেশ
  • কয়েকটি smb://শেয়ার মানচিত্র ,
  • ওরফে কিছু সার্ভার ব্যবহার করার জন্য কমান্ড

আমি কীভাবে এটি সম্পাদন করতে জানি না, যদিও।

  1. আপনি যদি একটি স্ক্রিপ্ট অথবা কমান্ড সেট কিভাবে চালানো না স্বয়ংক্রিয়ভাবে উপর লগঅন ?
  2. আপনি যদি একটি স্ক্রিপ্ট অথবা কমান্ড সেট কিভাবে চালানো না স্বয়ংক্রিয়ভাবে উপর logoff ?

উত্তর:


8

আপনার যদি ইতিমধ্যে ভিপিএন কনফিগার করা থাকে তবে আপনি কমান্ডলাইনের মাধ্যমে এটিতে সংযোগ করতে পারবেন। আমি এই উত্তরে যেমনটি ব্যাখ্যা করেছি , আপনি লগইন এবং লগআউটের জন্য যথাক্রমে দুটি শেল ফাংশন তৈরি করতে পারেন, আপনারগুলিতে যুক্ত করে ~/.bash_profile- 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
        end tell
end tell
EOF 
# insert your commands here
}

EOFচিহ্নিতকারীর পরে আপনার প্রয়োজনীয় কাস্টম কমান্ডগুলি অন্তর্ভুক্ত করুন ।


আপনি যদি এটির জন্য জিইউআই উপায় চান তবে অটোমেটার.অ্যাপ খুলুন এবং একটি নতুন অ্যাপ্লিকেশন তৈরি করুন । তারপরে, বাম ফলকটি থেকে একটি অ্যাপলস্ক্রিপ্ট এবং শেল স্ক্রিপ্ট চালানোর জন্য ক্রিয়াগুলি টানুন এবং নীচের চিত্রের মতো কমান্ডগুলি সন্নিবেশ করুন।

তারপরে আপনি এই সিউডো-অ্যাপ্লিকেশনটি দ্রুত লঞ্চ করতে আপনার ডকে রেখে দিতে পারেন।


1
এই কাজটি ঠিক আছে, তবে ভিপিএন নেটওয়ার্ক ইন্টারফেসের (ভিপিএন-এর জন্য রুট টেবিলের আইপি যুক্ত করার মতো) কিছু করার দরকার থাকলে এই ভিপিএন সংযুক্ত হওয়ার অনেক আগে শেল স্ক্রিপ্ট কার্যকর করার কারণে এই পদ্ধতিটি সম্পূর্ণরূপে কাজ করে না
ফিলিপ সাবিনো

1
সবেমাত্র এই আলোচনার সন্ধান পেয়েছে
ফিলিপ সাবিনো

আপনার মানে শেল স্ক্রিপ্টটি "এক্সিকিউট" না হয়ে সংযুক্ত হওয়ার আগেই "প্রস্থান" করবে? হ্যাঁ, একটি সাধারণ বিলম্ব কৌতুকটি করবে - অন্য কোনও পদ্ধতি সম্পর্কে অবগত নয়।
slhck

এটি IKEv2 ভিপিএনগুলির সাথে কাজ করবে না। আপনি এটি কীভাবে করতে পারেন তা এখানে রয়েছে: matt.coneybeare.me/… -সেবারে -অন-আপনার-ম্যাক /
কনিয়েবিয়ার

8

আরেকটি সমাধান হ'ল একটি লঞ্চডেমোন ব্যবহার করে নির্দিষ্ট ডিরেক্টরি নিরীক্ষণ করা এবং বাহ্যিক স্ক্রিপ্ট চালু করা যখনই ডিরেক্টরিতে পরিবর্তন হয়। ম্যাক বিকাশকারী লাইব্রেরি এ জাতীয় স্ক্রিপ্টের একটি রূপরেখা দেয় (তাদের উদাহরণ পর্যবেক্ষণ করে /etc/hostconfigএবং syslog -s -l notice "somebody touched /etc/hostconfig"যখনই ফাইলটির পরিবর্তনের সময় পরিবর্তন হয় তখনই এটি চালিত হয় ))

আমাদের উদ্দেশ্যে, আমরা নোট করি যে যতবার আপনি আপনার ভিপিএন-এ লগইন করেন, ডিরেক্টরিটি /Library/Preferences/SystemConfigurationপরিবর্তিত হয়। সুতরাং আপনি যদি নীচের প্লাস্ট ফাইলটি ভিতরে সংরক্ষণ করেন তবে /Library/LaunchDaemons/vpn.connectscript.plistএটি সেই ডিরেক্টরিটি দেখবে:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
      "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>vpn.connectscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/opt/local/bin/vpn_some_script.sh</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/SystemConfiguration</string>
    </array>
</dict>
</plist>

মনে রাখবেন যে এই লঞ্চডেমনকে কেবলমাত্র আপনার ভিপিএন সংযোগের চেয়ে বেশি বলা হবে (যেমন, প্রতিবার আপনি যখন ওয়াইফাইতে সংযুক্ত হন)। সুতরাং আপনার স্ক্রিপ্টটিতে /opt/local/bin/vpn_some_script.shএকটি চেক থাকা উচিত যে টানেলটি আসলে সংযুক্ত রয়েছে এবং স্ক্রিপ্টটি যদি একাধিকবার এটি একাধিকবার চালিত হয় তবে সমস্যাগুলি তৈরি করা উচিত নয়। (সুতরাং আপনি যদি শেয়ারগুলি মাউন্ট করেন তবে আপনি এটি পরীক্ষা করতে পারেন যে তারা ইতিমধ্যে মাউন্ট করা হয়নি)।

উদাহরণস্বরূপ, আমার স্ক্রিপ্টটি /opt/local/bin/vpn_some_script.shসহজভাবে:

#!/bin/bash                                                                                                             

# This only changes the routes table if utun0 exists.                                                                   
# -n checks that `ifconfig utun0` returns something other than "" on STDOUT                                             
# The 2> /dev/null redirects STDERR to null, to silence errors                                                          
if [[ -n `ifconfig utun0 2> /dev/null` ]] ; then
   route -n add -net 10.0.0.0/8 -interface utun0

   # Find the old default gateway                                                                                       
   GATEWAY=`route -n get default -ifscope en0 | grep gateway | awk '{ print $2 }'`
   # make everything (except blocks described above) go through old default gateway rather than VPN                     
   route -n change default $GATEWAY
fi

যা কেবলমাত্র VPN টানেলের সাথে সংযুক্ত থাকলে আমি সুরঙ্গটি দিয়ে 10.0.0.0/8 এ রুট যুক্ত করি (এবং 192.168.1.1 রাউটারে যাওয়ার জন্য ডিফল্টটি পরিবর্তন করি)।

আপনি যখন প্লিস্ট ফাইলটি সংরক্ষণ করবেন তখন এটি স্বয়ংক্রিয়ভাবে পরবর্তী পুনরায় বুট হবে। তবে আপনি নিজে এটি দিয়ে লোড করতে পারেন:

sudo launchctl load -w /Library/LaunchDaemons/vpn.connectscript.plist

দ্রষ্টব্য, যদি আপনার বাশ স্ক্রিপ্টের রুট অনুমতি প্রয়োজন হয় (উদাহরণস্বরূপ, আমার স্ক্রিপ্ট যা রাউটিং টেবিল পরিবর্তন করে), আপনাকে এটি /Library/LaunchDaemons/(বা /System/Library/LaunchDaemons) এ সঞ্চয় করতে হবে । যদি আপনার স্ক্রিপ্টটি সাধারণ ব্যবহারকারীর হিসাবে চালানো উচিত তবে আপনার এটি সংরক্ষণ করা উচিত ~/Library/LaunchAgents/

যদি আপনার স্ক্রিপ্টটি রুট হিসাবে চলে এবং বিশেষাধিকারের ক্রমবর্ধমান আক্রমণগুলি ভোগ করতে না চান, তবে যে বাশ স্ক্রিপ্টটি ডাকা হচ্ছে তা সেই ডিরেক্টরিতে থাকা উচিত /opt/local/bin/কেবল রুট দ্বারা সংশোধন করা যেতে পারে। আপনি যদি সংরক্ষণ করে থাকেন যে ~/binকোনও নিয়মিত ব্যবহারকারী স্ক্রিপ্টটি পরিবর্তন করতে পারে (বা ফাইল / ডিরেক্টরিটির নাম পরিবর্তন করে এবং তারা লিখেছেন এমন একটি ফাইল এটি প্রতিস্থাপন করতে পারে) এবং আপনার সিস্টেমে সম্পূর্ণ অ্যাক্সেস অর্জন করতে পারে।


3

/etc/ppp/ip-upপ্রাক সংযোগ স্ক্রিপ্ট এবং /etc/ppp/ip-downপোস্ট সংযোগ স্ক্রিপ্ট জন্য। এক্সিকিউশন অনুমতি বিট যোগ করতে ভুলবেন না। আমি পিপিটিপি এবং এল 2 টি পি ভিপিএন সংযোগের আগে ও পরে রুট টেবিলটি পরিবর্তন ও পুনরুদ্ধার করার জন্য তাদের ব্যবহার করি।

আপনি দুটি স্ক্রিপ্টের নাম লেখার পরে ip-upএবং ip-down, আপনি টার্মিনাল.এপ-এ নিম্নলিখিত কমান্ডগুলি চালাবেন:

chmod +x ip-up ip-down
sudo cp ip-up ip-down /etc/ppp

এখানে আরও বিশদ প্রয়োজন, দয়া করে ...
লবি

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