繁体   English   中英

bash脚本从文本文件读取/ ping IP地址列表,然后将结果写入另一个文件?

[英]bash script to read/ping a list of ip addresses from a text file and then write the results to another file?

我有一个文本文件,其中包含IP地址列表,称为address.txt,其中包含以下内容

172.26.26.1   wlan01

172.26.27.65    wlan02

172.26.28.180    wlan03

我需要编写一个bash脚本来读取唯一的IP地址,对它们执行ping操作,然后将其输出到另一个文本文件中,如下所示:

172.26.26.1是UP

172.26.27.65已关闭

172.26.28.180是DOWN

我对bash脚本非常陌生,所以我不确定从哪里开始。 任何帮助将非常感激。

在Linux中,这可以工作:

awk '{print $1}' < address.txt | while read ip; do ping -c1 $ip >/dev/null 2>&1 && echo $ip IS UP || echo $ip IS DOWN; done

我现在没有要测试的cygwin,但它也应该在那里工作。

说明:

  • 使用awk我们从输入文件中获取第一列并将其通过管道传递到循环中
  • 我们将单个ping发送到$ip ,并将标准输出和标准错误重定向到/dev/null这样它就不会污染我们的输出
  • 如果ping成功,则执行&&之后的命令: echo $ip IS UP
  • 如果ping失败, ||之后的命令 被执行: echo $ip IS DOWN

在脚本中添加一些更具可读性的扩展格式:

#!/bin/sh
awk '{print $1}' < address.txt | while read ip; do
    if ping -c1 $ip >/dev/null 2>&1; then
        echo $ip IS UP
    else
        echo $ip IS DOWN
    fi
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM