ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত হওয়ার পরে কল স্ক্রিপ্ট


14

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

আমি এই প্রশ্নটি পড়েছি: আমি যখন কোনও স্পেসিফিক ওয়্যারলেস নেটওয়ার্কের সাথে সংযোগ করি তখনই কি কোনও স্ক্রিপ্ট চালানোর কোনও উপায় আছে?

তবে এটি করতে কীভাবে আপস্টার্ট ব্যবহার করা যায় সে সম্পর্কে আমি সত্যিই অনিশ্চিত।

উত্তর:


16

আমার আগের উত্তরের জন্য ক্ষমাপ্রার্থী যা আমি বছর কয়েক আগে এটি করতাম। দেখে মনে হচ্ছে বিষয় বদলে গেছে।

দেখা যাচ্ছে যে নেটওয়ার্ক ম্যানেজার /etc/NetworkManager/dispatcher.d/ডিরেক্টরীতে সমস্ত স্ক্রিপ্ট চালায় (যেগুলি মূলের মালিকানাধীন, এক্সিকিউটেবল, যা অন্য ব্যবহারকারীদের দ্বারা পঠনযোগ্য নয় এবং সেটুইড নয়), যখন কোনও সংযোগ পরিবর্তিত হয় (উপরে, ডাউন, প্রিপআপ, পূর্বনির্ধারিত) ।

এনভায়রনমেন্ট ভেরিয়েবলগুলি নেটওয়ার্ক ম্যানেজার দ্বারা সেট করা হয় এবং এই স্ক্রিপ্টে দেওয়া হয়। আপনি CONNECTION_UID এনভায়রনমেন্ট ভেরিয়েবল (একটি স্বতন্ত্র স্ট্রিং রয়েছে) এ আগ্রহী হবেন।

সুতরাং, আপনার সমস্যা সমাধানের জন্য (যখন কোনও নির্দিষ্ট ওয়্যারলেস নেটওয়ার্ক সংযুক্ত থাকে তখন একটি স্ক্রিপ্ট কার্যকর করুন):

1) আপনার আগ্রহী বেতার সংযোগের uuid সন্ধান করুন ( /etc/NetworkManager/system-connections/ডিরেক্টরিতে উপযুক্ত সংযোগ ফাইলের ভিতরে দিয়ে )।

2) বাশ (বা পার্ল, বা পাইথন, বা যাই হোক না কেন) স্ক্রিপ্ট লিখুন যা পরিবেশের পরিবর্তনশীল CONNECTION_UID উপরের (1) এর ওয়্যারলেস নেটওয়ার্কের uuid এর সাথে মিল থাকলে আপনি যা চান তা করতে পারে।

3) এই স্ক্রিপ্টটি এতে রাখুন /etc/NetworkManager/dispatcher.d/এবং যথাযথভাবে মালিক এবং অনুমতিগুলি সেট করুন।

আরও পঠন: ম্যান নেটওয়ার্কম্যানেজার (এবং উপরে উল্লিখিত ডিরেক্টরিগুলিতে স্ক্রিপ্টগুলির চারপাশে একটি লিট পোকার)।

একটি উদাহরণ স্ক্রিপ্ট:

#!/bin/bash
#####################################
# MounterBeast Script
# /etc/NetworkManager/dispatcher.d/02remotemount
# Copyright 2011 Nathan E. Williams
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Usage:
# This script must be customized for your configuration.
# By default, the script will attempt to mount a CIFS share
# when a specified MAC address is found at the network gateway,
# or over sshfs if the MAC address of the gateway is not the specified MAC.
# e.g. I mount over CIFS to the servers internal IP when at home, and
# over sshfs when away from home.
#
# id gateway mac without physically checking the sticker:
# $ arp -n -a $(ip route show 0.0.0.0/0 | awk '{print $3}') | awk '{print $4}'
#
# Testing:
# up) sudo /etc/NetworkManager/dispatcher.d/02remotemount wlan0 up
# down) sudo /etc/NetworkManager/dispatcher.d/02remotemount wlan0 down
#####################################
#
# Configuration:
#
targetmac='xx:xx:xx:xx:xx:xx'
mount_user='$USER'
mount_pass='pass'
internal_server_name='192.168.1.102'
external_server_name='my.dyndns.com'
share_name="music"
mount_point='/mnt/remote'
ssh_port='22'
#
# Should not need to edit below
#
gateway=$(ip route show 0.0.0.0/0 | awk '{print $3}')
mactest=$(arp -n -a $gateway | awk '{print $4}')

if [[ "$mactest" == "$targetmac" ]]
then
  case "$2" in
          up)
          sleep 5
          mount -t cifs -o username=$mount_user,password=$mount_pass //$internal_server_name/$share_name $mount_point
          ;;
          down)
          umount -l $mount_point
          ;;
  esac
else
  case "$2" in
      up)
          sleep 5
          sshfs -p $ssh_port $external_server_name:$share_name $mount_point
      ;;
      down)
          umount -l $mount_point
      ;;
  esac
fi

exit $?

আরে, / ইত্যাদি / নেটওয়ার্ক-ম্যানেজার / সিস্টেম-সংযোগগুলিতে কিছুই নেই। স্পষ্টতই, ইউইউডি কেবলমাত্র সেখানে সংরক্ষণ করা থাকে যদি সংযোগটি নতুন হয় (আগে কখনও ব্যবহৃত হয় না)। তা সত্ত্বেও, আমি এটি /etc/network/if-up.d তে একটি বাশ স্ক্রিপ্ট তৈরি করে কাজ করতে পেরেছি। এটি যে কোনও ওয়্যারলেস নেটওয়ার্কের সাথে আমি সংযুক্ত থাকলেও স্ক্রিপ্টটি চালায় তবে আমি আইকনফিগ | এর মাধ্যমে কাজ করেছি গ্রেপ-কিউ "কিছু এসএসআইডি"। যদিও সঠিক দিকের দিকে ঝাঁকুনির জন্য ধন্যবাদ, এটি আপনার সাহায্য ছাড়াই আবিষ্কার করতে পারত না!
ব্রুক ডেট

আমার হিন্টু ইনস্টলেশনটির জন্যও কাজ করে,
টিপটির

উবুন্টু 16.04 এ। ডিরেক্টরিতে /etc/NetworkManager/dispatcher.d/01ifupdownস্ক্রিপ্টগুলি কার্যকর করে/etc/networking/if-*
পিটার

তথ্যের জন্য ধন্যবাদ. আমার স্ক্রিপ্টে কোনও ইউআইডি (যা আমি একাধিক ল্যাপটপে পোর্টেবল হতে চাই) হার্ডকডিংয়ের পরিবর্তে, grepসিস্টেম-সংযোগ ফাইলগুলিতে ব্যবহার করেছি used সুন্দরভাবে কাজ করে। ভালো কিছু essid=$(grep -l "uuid=$CONNECTION_UUID" /etc/NetworkManager/system-connections/*)দ্বারা অনুসরণ essid=$(basename $essid)
ডেভিড

প্রতি ব্যবহারকারী ভিত্তিতে এটি করা কি সম্ভব? আমি বর্তমানে সংযুক্ত নেটওয়ার্কের ভিত্তিতে স্বয়ংক্রিয়ভাবে প্রিন্টার কনফিগারেশন নির্বাচন করতে চাই। ( Askubuntu.com/questions/1204645/… )
কেতিল মালদে

1

নেটওয়ার্ক ম্যানেজারের সাথে এটি করার কোনও উপায় আছে কিনা তা আমি জানি না, সম্ভবত একটি উপায় আছে তবে আপনার কাছে আমার আরও একটি সমাধান রয়েছে। আপনি উইকড ইনস্টল করতে পারেন:

sudo apt-get install wicd

আপনার সংযোগ করতে পারবেন এমন প্রতিটি নেটওয়ার্কে প্রি-স্ক্রিপ্ট এবং পোস্ট-স্ক্রিপ্ট সমর্থন যুক্ত করার জন্য উইকডির জিটিকে ইন্টারফেসে সরাসরি সমর্থন রয়েছে। উইকড নেটওয়ার্ক-ম্যানেজারকে কাজ করার জন্য ইনস্টল করবে (তারা উভয় দ্বন্দ্বের মধ্যে রয়েছে) তাই যদি কিছু ভুল হয়ে যায় তবে আপনার নেটওয়ার্ক-ম্যানেজারের .deb ডাউনলোড করা উচিত বা আপনার সাথে একটি লাইভ-সিডি / লাইভ-ইউএসবি থাকা উচিত।

উইকড ব্যবহার করা সহজ এবং দ্রুত সংযোগ স্থাপনের ক্ষেত্রে নেটওয়ার্ক-ম্যানেজারের কিছু উন্নত বৈশিষ্ট্যগুলির অভাব রয়েছে (ভিপিএন এর মতো)। এখানে একটি স্ক্রিন শট হয় :

Wicd


1

হ্যাঁ, /etc/NetworkManager/dispatcher.d/নেটওয়ার্কম্যানেজারের জন্য শেল স্ক্রিপ্টগুলি খুব ভাল ধারণা।

রয়েছে NetworkManager দ্বারা, আরো মজা সঙ্গে একটি DBus পদ্ধতি, আরো জটিল: man nm-settings

নেটওয়ার্ক ম্যানেজারের ম্যান পৃষ্ঠা থেকে শেল আর্গুমেন্টগুলির পুনরায় শুরু dispatcher:

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

ক্রিয়াকলাপটি হ'ল: উপরে, ডাউন, ভিপিএন-আপ, ভিপিএন-ডাউন, হোস্টনাম, ডিএইচসিপি-চেঞ্জ, ডিএইচসিপি 6-পরিবর্তন। (ম্যান পেজ প্রকাশ: 17 জানুয়ারী 2012)

নেটওয়ার্ক ইন্টারফেস হওয়ার পরে ওপেনভিপিএন পুনরায় চালু করার জন্য এখানে একটি খুব সাধারণ স্ক্রিপ্ট রয়েছে up:

if [ "$2" = "up" ]; then  
       /etc/init.d/openvpn restart  
fi  
exit $? 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.