linux查看主机脚本,简单的bash脚本查看任意网段的在线主机
一前言
最近看到許多同志在寫(xiě)ping某個(gè)地址段的bash腳本,我也心血來(lái)潮來(lái)了一發(fā)。 ?當(dāng)然本人新手,大神勿噴。
二準(zhǔn)備工作
linux系統(tǒng)的機(jī)器一臺(tái),當(dāng)然虛擬機(jī)也可以,只要將網(wǎng)卡配置為橋接模式,可以連通其他局域網(wǎng)的主機(jī)即可。
1.實(shí)驗(yàn)環(huán)境 ?Centos 7.X 虛擬機(jī) ?軟件 bash ?ping
2.說(shuō)明 ?首先系統(tǒng)當(dāng)然是任何 linux類(lèi)或類(lèi)linux的機(jī)器都是可以的 虛擬機(jī)安裝完成后首先配置網(wǎng)卡
BOOTPROTO????我這里使用的是靜態(tài)的IP地址當(dāng)然你也可以使用靜態(tài)ip
ONBOOT? ? ? ? ?是否啟用網(wǎng)卡 改為yes不然重啟機(jī)器后網(wǎng)卡又失效了
IPADDR? ? ? ? ? 我這里是使用的靜態(tài)IP如果你的BOOTPROTO使用的是dhcp可以不用改這里
PREFIX????? ? ? ?子網(wǎng)掩碼的位數(shù)我這里使用的是172.18.0.0網(wǎng)段所以子網(wǎng)掩碼是16位如果你的BOOTPROTO使用的是dhcp可以不用改這里
GATEWAY? ? ? ?默認(rèn)網(wǎng)段不多解釋如果你的BOOTPROTO使用的是dhcp可以不用改這里
DNS1????? ? ? ? ?DNS地址用來(lái)解析域名的如果你沒(méi)設(shè)好吧你無(wú)法登陸www.baidu.com了除非你知道他的IP地址
3.查看命令是否存在
man了一下ping命令查看一下具體用法 ? 由man可以得知 ?-c是指定ping的次數(shù) ?-W指定超時(shí)時(shí)間 ?好的開(kāi)始
三腳本
為了能讓各位安全使用我已經(jīng)做了多次的測(cè)試 ?可能還有小bug歡迎致電
腳本的內(nèi)容如下:
#!/bin/bash
#Auther:xiaowu
#Dtion:ping dao ni
#Vsion:2.3
declare -i Inet
declare -i Snet
[[ $1 =~ ([0-9]{1,3}\.){3}([0-9]{1,3})\/(2[4-9]|3[0-2]) ]] ?#正則表達(dá)式驗(yàn)證是否為正確格式
if [ $? -ne 0 ] ;then ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #判斷格式是否配正確匹配
{
echo ” Usage:$0 172.18.0.0/24-32.” ? ? ? ? ? ? ?#如果格式未被正確匹配返回250狀態(tài)碼,并提示使用方法
exit 250
}
fi
Inet=`echo “$1″ | cut -d”.” -f4 | cut -d”/” -f1` ? ?#獲取Ip地址位
Iseg=`echo “$1″ | cut -d”/” -f2` ? ? ? ? ? ? ? ? ? ?#獲取子網(wǎng)掩碼位
Ipv4=`echo “$1″ | cut -d”.” -f1,2,3` ? ? ? ? ? ? ? ?#獲取主機(jī)位
echo “子網(wǎng)掩碼的位數(shù)為:$Iseg” ? ? ? ? ? ? ? ? ? ? ?#輸出子網(wǎng)掩碼
echo “Ipv4的首個(gè)地址為:$Inet” ? ? ? ? ? ? ? ? ? ? ?#輸出網(wǎng)絡(luò)地址位
echo “查看的網(wǎng)段地址為:$Ipv4” ? ? ? ? ? ? ? ? ? ? ?#輸出匹配的網(wǎng)絡(luò)位
let Smask=32-$Iseg ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#計(jì)算子網(wǎng)掩碼反掩碼位數(shù)
echo “反向子網(wǎng)掩碼位為:$Smask” ? ? ? ? ? ? ? ? ? ? #輸出反掩碼位數(shù)
Sips=$[2**$Smask] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #計(jì)算出指定網(wǎng)絡(luò)的IP數(shù)
echo “要查找的地址數(shù)為:$Sips” ? ? ? ? ? ? ? ? ? ? ?#輸出主機(jī)個(gè)數(shù)
Snet=$[ $Inet + $Sips -1 ] ? ? ? ? ? ? ? ? ? ? ? ? ?#從指定主機(jī)數(shù)到輸出的主機(jī)個(gè)數(shù)
if [ $Snet -gt 255 ] ;then ? ? ? ? ? ? ? ? ? ? ? ? ?#當(dāng)?shù)刂窋?shù)溢出時(shí)的補(bǔ)救措施
{
Snet=255 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#主機(jī)數(shù)強(qiáng)制為255個(gè)
}
fi
for i in `seq $Inet $Snet`; ? ? ? ? ? ? ? ? ? ? ? ? #for循環(huán)從指定主機(jī)開(kāi)始到指定網(wǎng)段結(jié)束的IP個(gè)數(shù)
do
ping -c1 -W1 $Ipv4.$i >/dev/null 2>&1 ?&& echo -e ?“\033[32m$Ipv4.$i is \tup \033[0m” || echo -e ?“$Ipv4.$i is\033[31m \tdown \033[0m”
#ping 判斷主機(jī)是在線(xiàn)還是 不在線(xiàn)
done
unset Inet Iseq Ipv4 wjy ?Smask Sips Snet ? ? ? ? ? #釋放上邊使用到的變量
使用方法 ?標(biāo)準(zhǔn)的IP地址/子網(wǎng)掩碼的位數(shù) ?譬如:172.18.252.0/24 ? 172.18.253.20/28 ? 172.18.6.110/30
主要是根據(jù)子網(wǎng)掩碼來(lái)計(jì)算需要ping的主機(jī)個(gè)數(shù) ?適用于經(jīng)過(guò)子網(wǎng)掩碼劃分過(guò)的網(wǎng)絡(luò) 最大支持/24 最多256個(gè)IP包括網(wǎng)絡(luò)位地址和主機(jī)位地址
注:此腳本適用于任何網(wǎng)段 ?并不是僅限于172.18.0.0 ?因?yàn)樽髡呤?72.18.0.0網(wǎng)段的 ?所以沒(méi)有用其他的網(wǎng)段測(cè)試
原創(chuàng)文章,作者:wode,如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.178linux.com/70381
總結(jié)
以上是生活随笔為你收集整理的linux查看主机脚本,简单的bash脚本查看任意网段的在线主机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iOS 15手动关闭 iPhone 11
- 下一篇: 如何查看 iPhone 上更早之前的通话