"Eth0", çıkarıldığında ve çıkarıldığında "dhclient" i yeniden denemek için nasıl yapılandırılır?


12

Linux aygıtı üzerinde çalışıyorum.

Ağ kablosunu zaten açıldıktan sonra takarsam veya ağ kablosu çıkarılıp yeniden takılırsa DHCP almasını istiyorum.

Bir çözüm böyle bir komut dosyası çalıştırmaktır (hangi çalışır, btw):

#!/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

Ancak, küçük parmağımda derin bir his var, bu bana ethernet kablosu için hotplug olaylarıyla başa çıkmanın daha iyi bir yolu olduğunu söylüyor.


1
Maalesef hem 2016 tarihi itibariyle ifplugdve netplugdsürdürücüsü görünür. Ancak bu benzer soru udev kurallarını kullanarak iyi (basit) bir cevabı var gibi görünüyor - ek bir pakete gerek yok. serverfault.com/a/312296/275255
Thom Nichols

Değişim autoiçin allow-hotplugde interfaces.
Ken keskin

Yanıtlar:


9

netplug

netplugbirlikte gittiğim çözüm. ifplugdolabilir.

Kurulum

sudo apt-get install netplug

Arayüz Konfigürasyonu

cat /etc/netplug/netplugd.conf
eth*

Olay Yapılandırması

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

Test yapmak

/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 bu durumu çok iyi idare eder:

ifplugdbir kablo takıldığında ethernet cihazınızı otomatik olarak yapılandıracak ve kablo çekildiğinde otomatik olarak yapılandırmayacak bir Linux arka plan programıdır. Arabirimi yalnızca bir kablo gerçekten bağlı olduğunda yapılandıracağından, yerleşik ağ bağdaştırıcılarına sahip dizüstü bilgisayarlarda kullanışlıdır.

ifplugd dağıtımınızın yerel ağ yapılandırma yardımcı programlarıyla arabirimler.

Bazı özellikler:

  • Dağıtımınızın yerel ifup/ ifdownprogramlarını kullanır .
  • [...]
  • Bağlantı durumunu almak için Linux'u SIOCETHTOOL(daha yeni, aka ethtoolAPI), SIOCGMIIREG(daha eski, aka mii-diag/ mii-toolAPI) ve SIOCDEVPRIVATE(en eski, aka mii-toolAPI) destekler ioctl(). 0.24 sürümü, IFF_RUNNINGarayüz bayrağıyla bağlantı algılama desteği sunar .
  • [...]
  • Kısa "fişsiz" süreleri ( -disteğe bağlı) veya kısa "fişli" süreleri ( -uisteğe bağlı) göz ardı edecek şekilde yapılandırılabilir
  • [...]
  • Kablo algılamayı desteklemeyen ağ aygıtları için uyumluluk modu ( -Fisteğe bağlı)

Yerel LKG'm beni yönlendirdi netplug, ben de onun yerine gittim. Teşekkürler!
CoolAJ86

Bu benim için bir uyarı yaptı. İle netplugdetkin, ben kaldırmak zorunda bulundu auto <interface>dan /etc/network/interfaces. Değilse, DHCP'den bir IP adresi almadan önce Ethernet kablosunu takmam, çıkarmam ve tekrar takmam gerekiyordu. Bu hat çıkarıldığında, kablo zaten takılıysa ilk eklenti olayında veya önyüklemede DHCP'den bir IP adresi alırım (önyüklemede IP, hat ifplugdetkinleştirildiğinde veya kaldırılmadan çalıştı ).
MrMas

5

Daha iyi çalışır ve aktif olarak korunur gibi netplugd üzerinden ifplugd kullanmanızı öneririm .

ifplugd, bir kablo takıldığında ethernet cihazınızı otomatik olarak yapılandıracak ve kablo çekildiğinde otomatik olarak yapılandırmayacak bir Linux arka plan programıdır. Arabirimi yalnızca bir kablo gerçekten bağlı olduğunda yapılandıracağından, yerleşik ağ bağdaştırıcılarına sahip dizüstü bilgisayarlarda kullanışlıdır.


2

Bu yazılımı benim ağ yapılandırması için kullanmak çok kolay.

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

Aşağıdaki NCD programı yapılacaktır. Ayrıca, bu durumda ağ yukarı / aşağı gittiğinde bir şeyler çalıştırarak yapılandırmayı nasıl genişletebileceğinizi gösterir.

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);
}

Bunun yalnızca takılı olan veya çıkarılan ağ kablosunu değil, aynı zamanda ağ arayüzünün kendisinin de görünüp kaybolacağını unutmayın (USB ise faydalıdır).

İfplugd gibi diğer yazılımlara kıyasla NCD kullanmanın avantajı, tasarımının büyük bir esneklik sağlamasıdır. Temel olarak, sınırlı sayıda sabit kodlanmış özelliklerle sınırlı olmanın aksine, kendi ağ yapılandırmanızı programlamanıza izin verir.

GÜNCELLEME: BadVPN ve NCD için Ubuntu paketleri hazırladım. Wiki'yi Ubuntu için kurulum ve kullanım talimatları ile de güncelledim: http://code.google.com/p/badvpn/wiki/NCD#Running_it


Bu gerçekten faydalı görünüyor, sizce Ubuntu / Fedora depolarına gireceksiniz mi?
CoolAJ86

Şu anda Arch ve Gentoo için paketlerim var ve başka hiçbir şey kullanmıyorum çünkü başka dağıtımları kullanmıyorum. Diğer dağıtımlar için paket yapmak için biraz zaman bulabilirim. Ancak bunu derlemek ve / usr / local ya da başka bir şeye yüklemek kolaydır ve başlatmak için basit bir init betiği hazırlayın.
Ambroz Bizjak

Ubuntu paketleri yapılır, isteğinize göre :)
Ambroz Bizjak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.