আমার আগের উত্তরের জন্য ক্ষমাপ্রার্থী যা আমি বছর কয়েক আগে এটি করতাম। দেখে মনে হচ্ছে বিষয় বদলে গেছে।
দেখা যাচ্ছে যে নেটওয়ার্ক ম্যানেজার /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 $?