Created
March 31, 2018 09:16
-
-
Save LuckyKoala/fa83b6b23fd306b7db4d80affc6cd753 to your computer and use it in GitHub Desktop.
简单的网络检查脚本,来源[GitHub](https://github.com/funet8/shell/blob/master/check_internet.sh)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# 来源 [GitHub](https://github.com/funet8/shell/blob/master/check_internet.sh) | |
#网络检查的脚本,当你不能上公网时,则直接执行这个脚本 | |
# 部分注释由iwar添加 | |
#输入网卡和局域网路由器IP | |
read -p "请输入您公网网卡名称:(如:eth0)" ethx | |
read -p "请输入您的局域网路由器IP:(如:192.168.1.1)" netip | |
ping -c 4 www.baidu.com > /dev/null 2>&1 | |
# 检查ping的返回值,为0则说明ping通,可以认为与公网是连通的 | |
if [ $? -eq 0 ];then | |
echo "可以上公网" | |
exit 0 | |
else | |
echo "Ping不通www.baidu.com,开始检查网络配置" | |
fi | |
# mii-tool 命令查看制定网卡的信息 | |
# cut 则分割字符串,这里通过-d " "指定了分隔符为空格 -f2表示选中分割后第二项内容 | |
linkstatus=`mii-tool $ethx |cut -d" " -f2` | |
if [ $linkstatus = negotiated ];then | |
echo "您的网卡插好。" | |
else | |
echo "请检查网线是否插好" | |
exit 1 | |
fi | |
# ping 之前设置的局域网路由器ip来检查当前主机的ip是否有问题 | |
ping -c 3 $netip > /dev/null 2>&1 | |
if [ $? -eq 0 ];then | |
echo "ipOK" | |
else | |
echo "IP有问题" | |
exit 2 | |
fi | |
# 分割字符串,得到Bcast后的ip地址 | |
ip=`ifconfig $ethx |grep Bcast |cut -d":" -f2 |cut -d" " -f1` | |
ipduan=`echo $netip |cut -d"." -f1,2` | |
# Bcast即是广播地址,可由ip|~Mask计算得来,这里只是简单的比较两地址的前16位 | |
# grep工具可以匹配特定模式 | |
echo $ip |grep $ipduan &> /dev/null | |
if [ $? -eq 0 ];then | |
echo "IP配置正常,路由器在一个网段!" | |
else | |
echo "IP配置不在局域网内的网段中" | |
fi | |
# route命令查看路由信息,-n选项表示不使用符号,而直接显示数字 | |
# ^0.0.0.0 这个模式即是匹配以0.0.0.0开头的字符串 | |
# 这里0.0.0.0作为目的地,含义是默认,所以是查看路由表中是否有默认的网管 | |
route -n |grep ^0.0.0.0 &>/dev/null | |
if [ $? -eq 0 ];then | |
echo "有网关" | |
else | |
echo "无网关" | |
exit 3 | |
fi | |
# tail命令输出末尾的内容,-1则表示只输出最后一行的内容 | |
# 依旧,这里通过处理route命令的输出得到网关地址 | |
gateway=`route -n |tail -1 |cut -d" " -f2` | |
echo 您的网关为:$gateway | |
ping -c 4 $gateway > /dev/null 2>&1 | |
if [ $? -eq 0 ];then | |
echo "能ping通网关地址" | |
exit 0 | |
else | |
echo "不能能ping通网关地址,请检查网关配置" | |
fi | |
#下面的DNS也可以写其它的外网DNS服务器的IP,这里因为太多,不好判断,所以只判断了114.114.114.114和8.8.8.8或者路由器IP | |
dns=`cat /etc/resolv.conf |grep ^nameserver |cut -d" " -f2` | |
echo $dns | |
if [ $dns = "114.114.114.114" -o $dns = "8.8.8.8" -o $dns = $netip ];then | |
echo "DNS配置正确" | |
else | |
echo "DNS有问题" | |
exit 5 | |
fi | |
echo "上面都OK,请找相关网络管理员" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment