fping 多线程

最近在和同事们聊天,他们说自己在写一个ping多个IP地址读取状态的情况。想多线程,比较麻烦。后来我给他说了一个软件,fping,简单。

1. 在centos/redhat上yum直接安装

yum install -y fping

2. 在ubuntu上apt-get直接安装

apt-get install -y fping

以下是执行过程:

[[email protected] caimz]# cat /etc/redhat-release

CentOS release 6.8 (Final)

[[email protected] caimz]# uname -a

Linux salt-master 2.6.32-642.6.1.el6.x86_64 #1 SMP Wed Oct 5 00:36:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

[[email protected] caimz]# yum install -y fping

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* epel: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

Resolving Dependencies

--> Running transaction check

---> Package fping.x86_64 0:2.4b2-10.el6 will be updated

---> Package fping.x86_64 0:2.4b2-16.el6 will be an update

--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================

Package                  Arch                      Version                            Repository                               Size

=====================================================================================================================================

Updating:

fping                    x86_64                    2.4b2-16.el6                       zabbix-non-supported                     31 k

Transaction Summary

=====================================================================================================================================

Upgrade       1 Package(s)

Total download size: 31 k

Downloading Packages:

fping-2.4b2-16.el6.x86_64.rpm                                                                                 |  31 kB     00:02

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Warning: RPMDB altered outside of yum.

Updating   : fping-2.4b2-16.el6.x86_64                                                                                         1/2

Cleanup    : fping-2.4b2-10.el6.x86_64                                                                                         2/2

Verifying  : fping-2.4b2-16.el6.x86_64                                                                                         1/2

Verifying  : fping-2.4b2-10.el6.x86_64                                                                                         2/2

Updated:

fping.x86_64 0:2.4b2-16.el6

Complete!

到这软件安装结束。接下来就是如何使用了。

  1. 先查看一下软件有哪些参数

[[email protected] caimz]# fping -h

Usage: fping [options] [targets...]

-a         show targets that are alive

-A         show targets by address

-b n       amount of ping data to send, in bytes (default 68)

-B f       set exponential backoff factor to f

-c n       count of pings to send to each target (default 1)

-C n       same as -c, report results in verbose format

-e         show elapsed time on return packets

-f file    read list of targets from a file ( - means stdin) (only if no -g specified)

# -f 后面就是去读取的文件,我放了ip列表,如下例子。

-g         generate target list (only if no -f specified)

(specify the start and end IP in the target list, or supply a IP netmask)

(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)

-i n       interval between sending ping packets (in millisec) (default 25)

-l         loop sending pings forever

-m         ping multiple interfaces on target host

-n         show targets by name (-d is equivalent)

-p n       interval between ping packets to one target (in millisec)

(in looping and counting modes, default 1000)

-q         quiet (don‘t show per-target/per-ping results)

-Q n       same as -q, but show summary every n seconds

-r n       number of retries (default 3)

-s         print final stats

-S addr    set source address

-t n       individual target initial timeout (in millisec) (default 500)

-T n       set select timeout (default 10)

-u         show targets that are unreachable

-v         show version

targets    list of targets to check (if no -f specified)

以下是翻译;

-a         show targets that are alive    显示可ping通的目标
   -A         show targets by address       将目标以ip地址的形式显示
   -b n       amount of ping data to send, in bytes (default 56)   ping 数据包的大小。(默认为56)
   -B f       set exponential backoff factor to f  设置指数反馈因子到f 
   -c n       count of pings to send to each target (default 1) ping每个目标的次数 (默认为1)
   -C n       same as -c, report results in verbose format 同-c, 返回的结果为冗长格式
   -e         show elapsed time on return packets 显示返回数据包所费时间
   -f file    read list of targets from a file ( - means stdin) (only if no -g specified)
               从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用)
   -g         generate target list (only if no -f specified)
               生成目标列表(不能与 -f 同时使用)
                (specify the start and end IP in the target list, or supply a IP netmask)
                (ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
                (可指定目标的开始和结束IP, 或者提供ip的子网掩码)
                (例:fping -g 192.168.1.0 192.168.1.255 或 fping -g 192.168.1.0/24)
   -H n       Set the IP TTL value (Time To Live hops)
                设置ip的TTL值 (生存时间)
   -i n       interval between sending ping packets (in millisec) (default 25)
               ping包之间的间隔(单位:毫秒)(默认25)
   -l         loop sending pings forever
              循环发送ping
   -m         ping multiple interfaces on target host
                ping目标主机的多个网口
   -n         show targets by name (-d is equivalent)
                将目标以主机名或域名显示(等价于 -d )
   -p n       interval between ping packets to one target (in millisec)
                对同一个目标的ping包间隔(毫秒)
                (in looping and counting modes, default 1000)
                (在循环和统计模式中,默认为1000)
   -q         quiet (don‘t show per-target/per-ping results) 安静模式(不显示每个目标或每个ping的结果)
   -Q n       same as -q, but show summary every n seconds 同-q, 但是每n秒显示信息概要
   -r n       number of retries (default 3)  当ping失败时,最大重试次数(默认为3次)
   -s         print final stats 打印最后的统计数据
   -I if      bind to a particular interface 绑定到特定的网卡
   -S addr    set source address  设置源ip地址
   -t n       individual target initial timeout (in millisec) (default 500)
               单个目标的超时时间(毫秒)(默认500)
   -T n       ignored (for compatibility with fping 2.4)  请忽略(为兼容fping 2.4)
   -u         show targets that are unreachable 显示不可到达的目标
   -O n       set the type of service (tos) flag on the ICMP packets  在icmp包中设置tos(服务类型)
   -v         show version  显示版本号
   targets    list of targets to check (if no -f specified)
                需要ping的目标列表(不能和 -f 同时使用)
-h              show this page 显示本帮助页

2.开始测试

[[email protected] caimz]# cat iplist

192.168.1.30

192.168.1.31

192.168.1.32

192.168.1.33

192.168.1.34

192.168.1.4

192.168.1.51

192.168.1.52

192.168.1.53

192.168.1.54

192.168.1.55

192.168.1.6

192.168.1.7

[[email protected] caimz]# fping -f iplist

192.168.1.30 is alive

192.168.1.31 is alive

192.168.1.32 is alive

192.168.1.33 is alive

192.168.1.34 is alive

192.168.1.4 is alive

192.168.1.51 is alive

192.168.1.52 is alive

192.168.1.53 is alive

192.168.1.54 is alive

192.168.1.55 is alive

192.168.1.6 is alive

192.168.1.7 is alive

一下子就全部返回了主机ip的在线存活状态。

时间: 2024-12-28 12:05:25

fping 多线程的相关文章

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

Spring多线程

Spring是通过TaskExecutor任务执行器来实现多线程和并发编程的.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync开启对异步的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务. 实例代码: (1)配置类 package com.lwh.highlight_spring4.ch3.taskexecutor; /**

python进阶学习(一)--多线程编程

1. 多线程 概念:简单地说操作系统可以同时执行多个不用程序.例如:一边用浏览器上网,一边在听音乐,一边在用笔记软件记笔记. 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务"一起"执行(实际上总有一些任务不在执行,因为切换任务的熟度相当快,看上去一起执行而已) 并行:指的是任务数小于等于CPU核数,即任务真的是一起执行的. 2. 线程 概念:线程是进程的一个实体,是CPU调度和分派的基本单位. threading--单线程执行: 1 import ti

多线程的实现及其安全问题

一.进程和线程概述 1.进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,简单来说开启一个程序就开启了一个进程: 如果开启多个进程,它们之间是由于CPU的时间片在相互的切换: 2.线程:开启一个进程的一个任务,对于多线程:每一个线程都在争夺CPU的执行权(CPU的执行权具有随机性): 如果一个程序的执行路径有多条,那么该线程是多线程;反之,就单线程线程:线程是依赖于进程存在的! 3.Jvm是多线程 -- 至少开启了两条线程 main方法 主线程 gc() 垃圾回收线程 二.多线程

多线程和多进程的区别与联系

1.单进程单线程:一个人在一个桌子上吃菜.2.单进程多线程:多个人在同一个桌子上一起吃菜.3.多进程单线程:多个人每个人在自己的桌子上吃菜. 多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了...此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢. 1.对于 Windows 系统来说,[开桌子]的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜.因此 Windows 多线程学习重点

Python有了asyncio和aiohttp在爬虫这类型IO任务中多线程/多进程还有存在的必要吗?

最近正在学习Python中的异步编程,看了一些博客后做了一些小测验:对比asyncio+aiohttp的爬虫和asyncio+aiohttp+concurrent.futures(线程池/进程池)在效率中的差异,注释:在爬虫中我几乎没有使用任何计算性任务,为了探测异步的性能,全部都只是做了网络IO请求,就是说aiohttp把网页get完就程序就done了. 结果发现前者的效率比后者还要高.我询问了另外一位博主,(提供代码的博主没回我信息),他说使用concurrent.futures的话因为我全

多线程(一)

这边来谈谈java中,我对对多线程的理解 在了解多线程前,先说说进程. 进程就是正在运行的应用程序.  当你打开任务管理器的时候,你就会发现很多的进程. 而我们要说的线程,就是依赖于进程而存在的,一个进程可以开启多个线程. Thread类 说到线程,就必须来说说Thread类. Thread类是说有线程的父类.具体请参见api 线程的创建以及执行(图解如下) 继承Thread类,或者实现rennable接口. 当继承了父类后,需要重写父类的run方法,这个run方法里面就写你要执行的代码,当这个

多线程下的单例-double check

话不多说直接上代码: public sealed class Singleton { private static Singleton _instance = null; // Creates an syn object. private static readonly object SynObject = new object(); Singleton() { } public static Singleton Instance { get { // Double-Checked Lockin

笔记:多线程

多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务,通常每个任务称为一个线程(thread),他是线程控制的简称,可以同时运行一个以上线程的程序称为多线程程序(multithreaded):多线程和多进程有哪些区别呢,本质的区别在于每个进程拥有自己的一整套变量,而线程则是共享数据,Java中启动一个线程的代码如下: // 线程任务的具体实现接口 ????public interface Runnable { public abstract void run(); ????} /