প্লাগ-ইন এবং প্ল্যাগ করা অবস্থায় `dhclient` পুনরায় চেষ্টা করার জন্য কীভাবে` eth0` কনফিগার করবেন?


12

আমি একটি লিনাক্স গ্যাজেটে কাজ করছি।

আমি চাই যে এটি ইতিমধ্যে বুট আপ হওয়ার পরে যদি নেটওয়ার্ক কেবলটি প্লাগ ইন করি বা নেটওয়ার্ক কেবলটি আনপ্লাগড এবং পুনরায় প্লাগ করা হয় তবে আমি এটি ডিএইচসিপি পাই।

একটি সমাধান হ'ল এটির মতো স্ক্রিপ্ট চালানো (যা কাজ করে, বিটিডব্লিউ):

#!/bin/bash

NET_STATUS='different'

while true
do
  NEW_NET_STATUS=`ifconfig | grep RUNNING | grep -v LOOPBACK`
  if [ "${NEW_NET_STATUS}" = "${NET_STATUS}" ]
  then
    echo "no change"
    sleep 1
    continue
  fi
  NET_STATUS=${NEW_NET_STATUS}
  if [ "${NET_STATUS}" ]
  then
    echo "cable plugged in"
  else
    echo "cable unplugged"
  fi
  sleep 1
done

যাইহোক, আমি আমার ছোট আঙ্গুলের গভীরে এমন অনুভূতি পেয়েছি যা আমাকে বলে যে ইথারনেট কেবলের হটপ্লাগ ইভেন্টগুলি মোকাবেলার জন্য আরও ভাল উপায়।


1
দুর্ভাগ্যক্রমে 2016 হিসাবে উভয় ifplugdএবং netplugdঅবিস্মরণীয় প্রদর্শিত। তবে এই অনুরূপ প্রশ্নের মতো দেখে মনে হচ্ছে এটির একটি ভাল (সরল) উত্তর আছে উদেব বিধিগুলি ব্যবহার করে - কোনও অতিরিক্ত প্যাকেজের প্রয়োজন নেই। serverfault.com/a/312296/275255
থম নিকোলস

পরিবর্তন autoকরার জন্য allow-hotpluginterfaces
কেন শার্প

উত্তর:


9

netplug

netplugআমি যে সমাধানটি দিয়েছি সেটাই হল। ifplugdঠিক পাশাপাশি কাজ করতে পারে।

স্থাপন

sudo apt-get install netplug

ইন্টারফেস কনফিগারেশন

cat /etc/netplug/netplugd.conf
eth*

ইভেন্ট কনফিগারেশন

cat /etc/netplug/netplug
#!/bin/sh
PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

dev="$1"
action="$2"

case "$action" in
in)
    echo "$dev : $action : plugged in" >> /tmp/netplug.log
    ;;
out)
    echo "$dev : $action : unplugged" >> /tmp/netplug.log
    ;;
probe)
    echo "$dev : $action : probed" >> /tmp/netplug.log
    ;;
*)
    echo "$dev : $action : I feel violated" >> /tmp/netplug.log
    exit 1
    ;;
esac

পরীক্ষামূলক

/etc/init.d/netplug stop
/etc/init.d/netplug start

cat /tmp/netplug.log
eth0 : probe : probed
eth1 : probe : probed
...
eth15 : probe : probed
eth0 : in : plugged in

5

ifplugd এই পরিস্থিতিটি খুব ভালভাবে পরিচালনা করে:

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

ifplugd আপনার বিতরণের স্থানীয় নেটওয়ার্ক কনফিগারেশন ইউটিলিটিগুলির সাথে ইন্টারফেস।

কিছু বৈশিষ্ট্য:

  • আপনার বিতরণের নেটিভ ifup/ ifdownপ্রোগ্রামগুলি ব্যবহার করে।
  • [...]
  • লিঙ্কের স্থিতি পাওয়ার জন্য লিনাক্স SIOCETHTOOL(নতুন, ওরফে ethtoolএপিআই), SIOCGMIIREG(পুরানো, ওরফে mii-diag/ mii-toolএপিআই) এবং SIOCDEVPRIVATE(প্রাচীনতম, ওরফে mii-toolএপিআই) সমর্থন করে ioctl()। রিলিজ 0.24 IFF_RUNNINGইন্টারফেস পতাকা সহ লিঙ্ক সনাক্তকরণের জন্য সমর্থন প্রবর্তন করে ।
  • [...]
  • -dসংক্ষিপ্ত "প্লাগড" পিরিয়ডগুলি ( -uবিকল্প) বা সংক্ষিপ্ত "প্লাগড" পিরিয়ডগুলি ( বিকল্প) উপেক্ষা করার জন্য কনফিগার করা যেতে পারে
  • [...]
  • নেটওয়ার্ক ডিভাইসগুলির জন্য উপযুক্ততা মোড যা কেবল সনাক্তকরণ সমর্থন করে না ( -Fবিকল্প)

আমার স্থানীয় এলইউজি আমাকে দিকনির্দেশনা করেছিল netplug, তাই আমি তার পরিবর্তে সেই সাথে চলেছি। ধন্যবাদ!
CoolAJ86

এটি আমার জন্য একটি সতর্কতামূলক কৌশলটি করেছিল। সঙ্গে netplugdসক্রিয় করা হলে, আমি দেখেছি যে আমি মুছে ফেলার জন্য ছিল auto <interface>থেকে /etc/network/interfaces। যদি তা না হয়, ডিএইচসিপি থেকে আইপি ঠিকানা পাওয়ার আগে আমাকে ইথারনেট কেবলটি প্লাগ করতে হয়েছিল, এটি সরিয়ে ফেলতে হয়েছিল এবং আবার প্লাগ ইন করতে হয়েছিল। এই লাইনটি সরিয়ে দিয়ে, আমি কেবল প্লাগইন ইভেন্টে বা বুটে ডিএইচসিপি থেকে একটি আইপি ঠিকানা পেয়েছি যদি তারের ইতিমধ্যে প্লাগ ইন করা থাকে ( ifplugdসক্ষম করা অবস্থায় লাইনটি দিয়ে বা ছাড়ানো ছাড়া বুটে আইপি কাজ করেছিল )।
মিঃমাস

5

আমি ব্যবহার সুপারিশ করবে ifplugd উপর netplugd যেমন ভাল কাজ করে এবং সক্রিয়ভাবে রক্ষা করা হয়।

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


2

নেটওয়ার্ক কনফিগারেশনের জন্য আমার এই সফ্টওয়্যারটি ব্যবহার করা খুব সহজ।

http://code.google.com/p/badvpn/wiki/NCD

নিম্নলিখিত এনসিডি প্রোগ্রামটি করবে। নেটওয়ার্কটি উপরে / নিচে নামার সময় কোনও কিছু চালিয়ে আপনি কীভাবে কনফিগারেশনটি প্রসারিত করতে পারবেন তা এটিও দেখায়।

process eth0 {
    # Set device.
    var("eth0") dev;

    # Wait for device to appear, set it up, and wait for cable to be plugged in.
    net.backend.waitdevice(dev);
    net.up(dev);
    net.backend.waitlink(dev);

    # DHCP configuration.
    # net.ipv4.dhcp() will block here until it obtaines an IP address.
    # It doesn't check the obtained address in any way,
    # so as a basic security measure, do not proceed if it is local.
    net.ipv4.dhcp(dev) dhcp;
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    # Assign IP address to interface, as obtained by DHCP.
    net.ipv4.addr(dev, dhcp.addr, dhcp.prefix);

    # Add default route.
    net.ipv4.route("0.0.0.0", "0", dhcp.gateway, "20", dev);

    # Add DNS servers.
    net.dns(dhcp.dns_servers, "20");

    # Run an external program when network comes up or goes down.
    list("/some/program/to/run/when/up", "argument") do;
    list("/some/program/to/run/when/down", "argument") undo;
    run(do, undo);
}

মনে রাখবেন এটি কেবল নেটওয়ার্ক কেবলটি প্লাগ ইন বা আউট হওয়া পরিচালনা করবে না, তবে নেটওয়ার্ক ইন্টারফেস নিজেই উপস্থিত হবে এবং অদৃশ্য হয়ে যাবে (এটি ইউএসবি থাকলে দরকারী)।

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

আপডেট: আমি ব্যাডভিপিএন এবং এনসিডির জন্য উবুন্টু প্যাকেজ তৈরি করেছি। আমি উবুন্টুর জন্য ইনস্টলেশন ও ব্যবহারের নির্দেশাবলীর সাথে উইকিটি আপডেট করেছি: http://code.google.com/p/badvpn/wiki/NCD# রুনিং_ইট


এটি সত্যিই দরকারী বলে মনে হচ্ছে, আপনি কি উবুন্টু / ফেডোরা ভান্ডারে প্রবেশ করবেন?
CoolAJ86

বর্তমানে আমার কাছে আর্চ এবং জেন্টুর জন্য প্যাকেজ রয়েছে এবং অন্য কিছু নেই কারণ আমি অন্যান্য ডিস্ট্রো ব্যবহার করি না। অন্যান্য ডিস্ট্রোদের জন্য প্যাকেজ তৈরি করতে আমি কিছু সময় পেতে পারি। তবে এটি কেবল / ইউএসআর / স্থানীয় বা কোনও কিছুর মধ্যে সংকলন এবং ইনস্টল করা সহজ, এবং এটি শুরু করার জন্য একটি সাধারণ থ্রি স্ক্রিপ্ট তৈরি করা।
আম্বروز বিজ্জাক

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