思想就是整個網段ping一遍,對於ping不通的,解析其失敗的字符來判定
#!/bin/bash head_add=${1} address=${head_add%.*} echo address=$address for i in {1..255} do ping -c 2 $address.$i |grep -iq "tty" && (echo IP addr 192.168.0.$i ok;echo 192.168.0.$i >>./ok_ip) || (echo IP addr 192.168.0.$i bad;echo 192.168.0.$i >> ./bad_ip)
done
首先用到了字符串的截取
${expression}下面寫用到的一種方法
使用 % 號操作符。用途是從右邊開始刪除第一次出現子字符串即其右邊字符,保留左邊字符。用法為%substr*,例如: str='http://www.你的域名.com/cut-string.html' echo ${str%/*} 得到的結果為http://www.你的域名.com,即刪除從右邊開始到第一個"/"及其右邊所有字符
更多可以參考
https://www.cnblogs.com/onmyway20xx/p/4308113.html
接下來 ping -c 2,就是ping兩次,ping不同的話會顯示 unreach的字樣
然后grep分析是否含有目標字符串
grep -q用於if邏輯判斷很好用,如果有匹配的內容則立即返回狀態值0,否則返回非0
接下來按邏輯輸出即可,找到返回1,即輸出&&緊跟命令,否則返回||后的
{
command
}&
這是多線程的寫法,后跟wait表示所有線程執行完畢后,繼續下面的動作
nmap命令也可用於掃描網段命令