ifplugd 實現網口檢測

來源:互聯網
上載者:User

轉自http://linux.die.net/man/8/ifplugd

Name

ifplugd - A link detection daemon for ethernet devices

Synopsis

ifplugd [options]

Description

ifplugd is a daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled. This is useful on laptops with on-board network adapters, since it will only configure the interface
when a cable is really connected.

It uses your distribution's native ifup/ifdown programs, but can be configured to do anything you wish when the state of the interface changes. It may ignore short unplugged whiles (-d option) or plugged whiles (-u option).

ifplugd may be used in "compatibility mode" by specifying -F on the command line. Than ifplugd will treat network drivers which do not support link beat querying as always online.

Options
-a | --no-auto
Do not enable interface automatically (default: off)
-n | --no-daemon
Do not daemonize (for debugging) (default: off)
-s | --no-syslog
Do not use syslog, use stdout instead (for debugging) (default: off).
-b | --no-beep
Do not beep (off)
-f | --ignore-fail
Ignore detection failure, retry instead. Failure is treated as "no link". (default: off)
-F | --ignore-fail-positive
Ignore detection failure, retry instead. Failure is treated as "link detected". (default: off)
-i | --iface= IFACE
Specify ethernet interface (default: eth0)
-r | --run= EXEC
Specify program to execute when link status changes (default: /etc/ifplugd/ifplugd.action)
-I | --ignore-retval
Don't exit on nonzero return value of program executed on link change. (default: off)
-t | --poll-time= SECS
Specify poll time in seconds (default: 1)
-u | --delay-up= SECS
Specify delay for configuring interface (default: 0)
-d | --delay-down= SECS
Specify delay for deconfiguring interface (default: 5)
-m | --api-mode= MODE
Force a specific link beat detection ioctl() API. Possible values are auto, iff, wlan, ethtool, mii, and priv for automatic detection, interface flag (IFF_RUNNING), wireless extension, SIOCETHTOOL, SIOCGMIIREG resp. SIOCPRIV. Only the first character of
the argument is relevant, case insensitive. (default: auto)
-p | --no-startup
Don't call the script to bring up network on deamon start (default: off)
-q | --no-shutdown
Don't call the script for network shutdown on deamon quit (default: off)
-w | --wait-on-fork
When daemonizing, wait until the background process finished with the initial link beat detection. When this is enabled, the parent process will return the link status on exit. 1 means link beat detected, 2 stands for link beat not detected, everything
else is an error.
-W | --wait-on-kill
When killing a running daemon (with -k) wait until the daemon died.
-x | --extra-arg= ARG
Specify an extra argument to be passed to the action script.
-M | --monitor
Don't fail when the network interface is not available, instead use NETLINK to monitor device avaibility. The is useful for PCMCIA devices and similar.
-h | --help
Show help
-k | --kill
Kill a running daemon (Specify -i to select the daemon instance to kill)
-c | --check-running
Check if a daemon is running for a given network interface. Sets the return value to 0 if a daemon is already running or to 255 if not.
-v | --version
Show version
-S | --supend
Suspend a running daemon. The daemon will no longer check the link status until it is resumed (-R) again. (Specify -i to select the daemon instance to suspend.)
-R | --resume
Resume a suspended daemon. (Specify -i to select the daemon instance to resume.)
-z | --info
Request that a running daemon shall write its status information to syslog. (Specify -i to select the daemon instance to send the request to.)
Files

/etc/ifplugd/ifplugd.conf: this file is sourced by the init script
/etc/init.d/ifplugd
and contains the interface to be monitored and the options to be used.

/etc/ifplugd/ifplugd.action: this is the script which will be called by the daemon whenever the state of the interface changes. It takes two areguments: the first is the interface name (eg. eth0), the second either "up" or "down".

/var/run/ifplugd.<iface>.pid: the pid file for ifplugd.

Environment

The action script will be called with two environment variables set:

IFPLUGD_PREVIOUS The previous link status. Either "up", "down", "error" or "disabled". The former values should be obvious, the latter is set on daemon startup.

IFPLUGD_CURRENT The current link status. See above for possible values.

Signals

SIGINT, SIGTERM ifplugd will quit, possibly running the shutdown script. This is issued by passing -k to ifplugd.

SIGQUIT ifplugd will quit, the shutdown script is never run.

SIGHUP ifplugd will write its status information to syslog. This is issued by -z.

SIGUSR1 ifplugd will go to suspend mode. (-S)

SIGUSR2 ifplugd will resume from suspend mode. (-R)

Author

ifplugd was written by Lennart Poettering <mzvscyhtq (at) 0pointer (dot) de>. ifplugd is available at
http://0pointer.de/lennart/projects/ifplugd/

See Also

ifplugd.conf(5),
ifup(8),
interfaces(5), ifconfig(8),
ifplugstatus(8)

Comments

This man page was written using xmltoman(1) by Oliver Kurth.

Referenced By

waproamd(8)

轉自http://blog.chinaunix.net/uid-9672747-id-3278700.html

ifplugd檢測eth0拔插訊息 (2012-07-18 15:21)
一鍵轉載分類:
Linux常用知識

 

為了檢測固定網線口的拔插訊息,在busybox裡配置了ifplugd ptions:
        -n              Don't daemonize
        -s              Don't log to syslog
        -i IFACE        Interface
        -f/-F           Treat link detection error as link down/link up
                        (otherwise exit on error)
        -a              Don't up interface at each link probe
        -M              Monitor creation/destruction of interface
                        (otherwise it must exist)
        -r PROG         Script to run
        -x ARG          Extra argument for script
        -I              Don't exit on nonzero exit code from script
        -p              Don't run script on daemon startup
        -q              Don't run script on daemon quit
        -l              Run script on startup even if no cable is detected
        -t SECS         Poll time in seconds
        -u SECS         Delay before running script after link up
        -d SECS         Delay after link down
        -m MODE         API mode (mii, priv, ethtool, wlan, iff, auto)
        -k              Kill running daemon 系統起來後運行ifplugd -nI -i eth0 -r /etc/network/if.sh會在當前shell啟動ifplugd並檢測網口狀態# ifplugd -nI -i eth0 -r /etc/network/if.sh
ifplugd(eth0): started: BusyBox v1.16.1 (2011-01-28 11:42:48 HKT)
ifplugd(eth0): using SIOCETHTOOL detection mode
ifplugd(eth0): link is up
ifplugd(eth0): executing '/etc/network/if.sh eth0 up'
ifplugd(eth0): exit code: 0
GMAC:eth0: Link is down
ifplugd(eth0): link is down
ifplugd(eth0): executing '/etc/network/if.sh eth0 down'
ifplugd(eth0): exit code: 0
GMAC:eth0 : Link is Up
ifplugd(eth0): link is up
ifplugd(eth0): executing '/etc/network/if.sh eth0 up'
ifplugd(eth0): exit code: 0 基於上面的資料我做了個簡單的網口檢測程式從上面的紅色字型可以看出當ifplugd指令執行的時候會調用後面的指定的指令碼,並且向指令碼中傳遞參數在檔案系統中裝上ifplugd後,啟動ifplugd作為守護進程在後台執行,同時指定網口改變時執行的指令檔,當網口和斷開分別執行不同的程式, 指令碼:#!/bin/sh
echo "if1.sh"
echo $#
echo $0
echo $1
echo $2
if [ $# -eq 2 ];then
   if [ $1 = "eth0" ];then
   echo -n "ech0  "
   fi
   if [ $2 = "up" ];then
   echo "up"
   exec /etc/network/net_up
   elif [ $2 = "down" ];then
   echo "down"
   exec /etc/network/net_down
   elif [ $2 = "disable" ];then
   echo "disable"
   elif [ $2 = "error" ];then
   echo "error"
   fi
fi 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.