Shell-Script
Ping 主機,檢查是否存活,並通過 shell 腳本將結果發送到文件
為了清除我的自定義
hosts
文件並刪除 Windows 上的死域,我從 ping 主機domains.txt
,如果收到回复,我將該主機添加到result.txt
:@echo off >result.txt ( for /f %%i in (domain.txt) do ping -n 1 %%i >nul && echo 127.0.0.1 %%i )
誰能幫助我通過 Linux shell 腳本實現相同的功能?
Funceble https://github.com/funilrys/funceble是我今天推薦使用的最佳工具。
$ ./funceble -f domain.txt Domain Status Expiration Date Source Analyse Date ------------------------------------------- ----------- ----------------- ---------- -------------------- google.com ACTIVE 14-sep-2020 WHOIS Tue Sep 25, 06:30:43 stackexchange.com ACTIVE 12-jun-2018 WHOIS Tue Sep 25, 06:30:44 zhnixomknxkm.com INACTIVE Unknown NSLOOKUP Tue Sep 25, 06:30:45 kvfjjyrlsphr.info INACTIVE Unknown NSLOOKUP Tue Sep 25, 06:30:46 adblockplus.org ACTIVE 09-jun-2018 WHOIS Tue Sep 25, 06:30:47 Status Percentage Numbers ----------- ------------ ------------- ACTIVE 60% 3 INACTIVE 40% 2 INVALID 0% 0
如果你正在使用
bash
,你可以試試這個簡短的腳本:#!/bin/bash while IFS= read -r host; do [[ $(ping -c4 "$host") ]] 2>/dev/null && echo "$host" >> /path/to/result.txt done < /path/to/domains.txt
在這裡,我假設其中的主機
domains.txt
是換行符分隔的。編輯:
這是修改後的腳本,
ping
詳細(摘要)並假設目錄/path/to/directory/
包含文件domains-01.txt
等domains-02.txt
。#!/bin/bash for file in /path/to/directory/domains-*.txt; do while IFS= read -r host; do ping -qc4 "$host" && echo "$host" >> /where/to/save/result.txt done < "$file" done
如果您想要暫停-恢復行為,請查看
SIGTSTP
/SIGSTOP
和SIGCONT
可以使用類似命令發出的信號kill
,例如,如果程序的 PID 為 2773,則:暫停:
kill -TSTP 2773
,恢復:kill -CONT 2773
。