簡體   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