2019年 12月 26日
fping:SUSE Linux でデバイスの一発死活監視に便利
# ping xxx.xxx.xxx.xxx
# fping -g xxx.xxx.xxx.xxx xxx.xxx.xxx.yyy
※ fping はディストリビューションによって使い方が異なる場合があります。
デフォルトではインストールされません。 SUSE Linux では zypper か yast でインストールします。ちなみに、zabbix をインストールした場合、zabbix が fping を使うため、デフォルトでインストールされます。sles15:~ #fpingIf 'fping' is not a typo you can use command-not-found to lookup the package that contains it, like this:cnf fpingsles15:~ ## yast > Software > Software Manegement > で fping を "search" 、Space キーでチェックして Accept.テキスト yast の場合GUI 版 yast2 の場合
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。
sles15:~ # whereis fpingfping: /usr/sbin/fping /usr/share/man/man8/fping.8.gzsles15:~ #sles15:~ # ls /usr/sbin/fping -al-rwxr-xr-x 1 root root 44472 May 26 2018 /usr/sbin/fpingsles15:~ #/usr/sbin にインストールされるため、 root で実行するか、フルパス指定します。
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。sles15:~ # fping --helpUsage: fping [options] [targets...]Probing options:-4, --ipv4 only ping IPv4 addresses-6, --ipv6 only ping IPv6 addresses-b, --size=BYTES amount of ping data to send, in bytes (default: 56)-B, --backoff=N set exponential backoff factor to N (default: 1.5)-c, --count=N count mode: send N pings to each target-f, --file=FILE read list of targets from a file ( - means stdin)-g, --generate generate target list (only if no -f specified)(give start and end IP in the target list, or a CIDR address)(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)-H, --ttl=N set the IP TTL value (Time To Live hops)-I, --iface=IFACE bind to a particular interface-l, --loop loop mode: send pings forever-m, --all use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A-M, --dontfrag set the Don't Fragment flag-O, --tos=N set the type of service (tos) flag on the ICMP packets-p, --period=MSEC interval between ping packets to one target (in ms)(in loop and count modes, default: 1000 ms)-r, --retry=N number of retries (default: 3)-R, --random random packet data (to foil link data compression)-S, --src=IP set source address-t, --timeout=MSEC individual target initial timeout (default: 500 ms,except with -l/-c/-C, where it's the -p period up to 2000 ms)Output options:-a, --alive show targets that are alive-A, --addr show targets by address-C, --vcount=N same as -c, report results in verbose format-D, --timestamp print timestamp before each output line-e, --elapsed show elapsed time on return packets-i, --interval=MSEC interval between sending ping packets (default: 10 ms)-n, --name show targets by name (-d is equivalent)-N, --netdata output compatible for netdata (-l -Q are required)-o, --outage show the accumulated outage time (lost packets * packet interval)-q, --quiet quiet (don't show per-target/per-ping results)-Q, --squiet=SECS same as -q, but show summary every n seconds-s, --stats print final stats-u, --unreach show targets that are unreachable-v, --version show versionsles15:~ #
範囲指定のため -g オプションで xx.xx.xx.xx から xx.xx.xx.yy までを指定します。sles15:~ # fping -g 192.168.1.1 192.168.1.6192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.1.6 is aliveICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4192.168.1.4 is unreachable192.168.1.5 is unreachablesles15:~ #
2>/dev/null を付けて標準エラー出力を null にリダイレクト
※ 2> の間はスペースを入れません。
sles15:~ # fping -g 192.168.1.1 192.168.1.6 2> /dev/null192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.1.6 is alive192.168.1.4 is unreachable192.168.1.5 is unreachablesles15:~ #
-g xx.ss.xx.xx/mm でサブネットマスクを指定しサブネット全体の動作状態を確認します。
※ 2> にはスペースが入らない!
sles15:~ # fping -g 192.168.1.1/24 2>/dev/null192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.1.6 is alive192.168.1.22 is alive192.168.1.24 is alive192.168.1.35 is alive192.168.1.41 is alive192.168.1.44 is alive192.168.1.34 is alive192.168.1.47 is alive: 中略192.168.1.4 is unreachable192.168.1.5 is unreachable: 以下略
”alive” を grep してみた。sles15:~ # fping -g 192.168.1.1/24 2>/dev/null | grep alive192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.1.6 is alive192.168.1.22 is alive192.168.1.24 is alive192.168.1.35 is alive192.168.1.37 is alive192.168.1.41 is alive192.168.1.44 is alive192.168.1.34 is alive192.168.1.47 is alive192.168.1.49 is alive192.168.1.45 is alive192.168.1.46 is alive192.168.1.217 is alive192.168.1.221 is alive192.168.1.232 is alive192.168.1.233 is alive192.168.1.234 is alive192.168.1.235 is alive192.168.1.236 is alive192.168.1.237 is alive192.168.1.239 is alive192.168.1.240 is alivesles15:~ #
本気で学ぶ Linux実践入門 サーバ運用のための業務レベル管理術
新品価格
¥3,278から
(2020/1/16 17:05時点)
事前にホストリストのテキストを作り、 -f で指定する-f hostlist.txt例えば、「構内LANから、インターネットに接続できない」などの場合、hostlist.txt に経由するルータ、スイッチ、ISPのDNSやインターネットサービスを記述して、おけば、いつでもすぐに接続障害が判る(といいな)な作業ができます。例えば経由するファイアウォール、ルータ、Google の DNS が動いていて、インターネットにつながるかどうかは、hostlist ファイルはこんな感じでしょうか。sles15:~ # cat hostlist.txt192.168.1.1192.168.1.2192.168.1.3192.168.3.2192.168.3.18.8.8.8www.google.comwww.yahoo.co.jpsles15:~ # fping -f hostlist.txt192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.3.2 is alive192.168.3.1 is alive8.8.8.8 is alivewww.google.com is alivewww.yahoo.co.jp is alivesles15:~ #
sles15:~ # fping dns2 dns3 nas1dns2 is alivedns3 is alivenas1 is alivesles15:~ #
-s オプションで合計のステータスを合わせて表示します。sles15:~ # fping -g -s 192.168.1.0 192.168.1.10192.168.1.0: error while sending ping: Permission denied192.168.1.1 is alive192.168.1.2 is alive192.168.1.3 is alive192.168.1.6 is alive192.168.1.0: error while sending ping: Permission denied:中略192.168.1.8 is unreachable192.168.1.9 is unreachable192.168.1.10 is unreachable11 targets4 alive7 unreachable0 unknown addresses7 timeouts (waiting for response)32 ICMP Echos sent4 ICMP Echo Replies received24 other ICMP received0.23 ms (min round trip time)0.34 ms (avg round trip time)0.43 ms (max round trip time)4.175 sec (elapsed real time)sles15:~ #
従来の arp -a コマンドは ip n に置き換わりました。fping を実行してすぐに ip n を実行すると、セグメント内の各デバイスの MAC アドレスが判ります。もしアセット管理でMACアドレスを登録済のデバイス以外に、見慣れない MAC アドレスがあれば、許可なく持ち込まれたデバイスだった.....なんて事がすぐわかると便利なんですけどね。sles15:~ # arp -aIf 'arp' is not a typo you can use command-not-found to lookup the package that contains it, like this:cnf arpsles15:~ # ip n192.168.1.9 dev br0 FAILED192.168.1.46 dev br0 lladdr 5c:59:48:8c:35:2c STALE192.168.1.5 dev br0 FAILED192.168.1.237 dev br0 lladdr 00:08:9b:bd:11:7e STALE192.168.1.1 dev br0 lladdr cc:e1:d5:ca:f6:da STALE192.168.1.233 dev br0 lladdr 52:54:00:5c:0e:0a STALE:中略192.168.1.217 dev br0 lladdr 52:54:00:22:df:39 STALE192.168.1.35 dev br0 lladdr 00:23:81:17:47:e2 STALE192.168.1.22 dev br0 lladdr 00:16:3e:f5:f5:f5 STALEsles15:~ #