linux网络检测脚本
来源:互联网 发布:怎么强制删除mac软件 编辑:程序博客网 时间:2024/05/22 13:40
#!/bin/bash
#设置全局变量
dev_name=""
ip=""
# 输出错误信息并且返回错误码 结束脚本执行
exit_str() {
echo $1
exit $2
}
# 判断是否有管理员的权限
is_root() {
test $UID -ne 0 && exit_str "请使用sudo运行此脚本!" 1
}
# 获取网卡设备名
get_dev_name() {
dev_name=$(ifconfig | egrep 'enp|eth' | cut -d\ -f1)
test -z "$dev_name" && exit_str "网卡设备找不到, 请检查网卡是否启动!" 2
dev_name=${dev_name%:*}
test "x$1" = "xout" && exit_str $dev_name 0
}
# 查看网线是否连通 mii-tool
is_dev_ok() {
test -z "$ip" || return
test -z "$dev_name" && get_dev_name
mii-tool $dev_name 2> /dev/null | grep 'link ok' &> /dev/null \
|| exit_str "$dev_name: 网线没有插好,请检测!" 3
}
# 查看本机IP地址
get_ip() {
test -z "$ip" || return
test -z $dev_name && get_dev_name
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
local ipMsg=$(ifconfig $dev_name)
ip=${ipMsg#*addr:}
ip=${ip%% Bcast:*}
test -z "$ip" && exit_str "$dev_name: 没有设置本机IP地址!" 4
test "x$1" = "xout" && exit_str $ip 0
}
# ping操作 需要传递要ping的参数
mping() {
test -z "$1" && return 1
ping -c 1 $1 &> /dev/null && return 0 || return 1
}
# 主函数,全程检测网络情况
main() {
is_root
is_dev_ok
get_ip
# ping网关
gwip=${ip%.*}.1
mping $gwip || exit_str "$gwip: 网关ping不通!" 5
# ping域名解析服务器(DNS) 223.5.5.5 / 8.8.8.8
mping 223.5.5.5 || exit_str "请检查路由表是否设置默认网关!" 6
# ping域名(百度)
mping www.baidu.com || exit_str "请检查是否正确指定DNS解析服务器!" 7
echo "你的网络没有任何问题!"
}
# 让程序接受参数,根据不同的参数做不同功能
# ping子命令 调用mping
# ip子命令 调用get_ip
# dev子命令 调用get_dev_name
run_command() {
case "$1" in
ping)
test -z "$2" && exit_str "ping子命令必须指定目标!" 100
mping $2
exit $?
;;
ip)
test -z "$2" && get_ip out
ip=$2
main
;;
dev)
# 如果有第二个参数代表设置设备名
test -z "$2" && get_dev_name out
dev_name=$2
main
;;
*)
echo "暂不支持 $1 子命令功能!"
;;
esac
}
# 根据参数运行主函数
test -z "$1" && main || run_command $@
#设置全局变量
dev_name=""
ip=""
# 输出错误信息并且返回错误码 结束脚本执行
exit_str() {
echo $1
exit $2
}
# 判断是否有管理员的权限
is_root() {
test $UID -ne 0 && exit_str "请使用sudo运行此脚本!" 1
}
# 获取网卡设备名
get_dev_name() {
dev_name=$(ifconfig | egrep 'enp|eth' | cut -d\ -f1)
test -z "$dev_name" && exit_str "网卡设备找不到, 请检查网卡是否启动!" 2
dev_name=${dev_name%:*}
test "x$1" = "xout" && exit_str $dev_name 0
}
# 查看网线是否连通 mii-tool
is_dev_ok() {
test -z "$ip" || return
test -z "$dev_name" && get_dev_name
mii-tool $dev_name 2> /dev/null | grep 'link ok' &> /dev/null \
|| exit_str "$dev_name: 网线没有插好,请检测!" 3
}
# 查看本机IP地址
get_ip() {
test -z "$ip" || return
test -z $dev_name && get_dev_name
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
local ipMsg=$(ifconfig $dev_name)
ip=${ipMsg#*addr:}
ip=${ip%% Bcast:*}
test -z "$ip" && exit_str "$dev_name: 没有设置本机IP地址!" 4
test "x$1" = "xout" && exit_str $ip 0
}
# ping操作 需要传递要ping的参数
mping() {
test -z "$1" && return 1
ping -c 1 $1 &> /dev/null && return 0 || return 1
}
# 主函数,全程检测网络情况
main() {
is_root
is_dev_ok
get_ip
# ping网关
gwip=${ip%.*}.1
mping $gwip || exit_str "$gwip: 网关ping不通!" 5
# ping域名解析服务器(DNS) 223.5.5.5 / 8.8.8.8
mping 223.5.5.5 || exit_str "请检查路由表是否设置默认网关!" 6
# ping域名(百度)
mping www.baidu.com || exit_str "请检查是否正确指定DNS解析服务器!" 7
echo "你的网络没有任何问题!"
}
# 让程序接受参数,根据不同的参数做不同功能
# ping子命令 调用mping
# ip子命令 调用get_ip
# dev子命令 调用get_dev_name
run_command() {
case "$1" in
ping)
test -z "$2" && exit_str "ping子命令必须指定目标!" 100
mping $2
exit $?
;;
ip)
test -z "$2" && get_ip out
ip=$2
main
;;
dev)
# 如果有第二个参数代表设置设备名
test -z "$2" && get_dev_name out
dev_name=$2
main
;;
*)
echo "暂不支持 $1 子命令功能!"
;;
esac
}
# 根据参数运行主函数
test -z "$1" && main || run_command $@
0 0
- linux网络检测脚本
- Linux 脚本循环检测网络状态
- linux脚本检测本机与指定IP段网络是否畅通
- Linux网络配置脚本
- shell脚本检测网络是否畅通
- shell脚本实现网络连接的检测
- 脚本自动ping检测网络情况
- Linux网络入侵检测软件
- linux 网络质量检测 网络故障
- linux网络编程---心跳检测
- linux shell检测网络连接
- linux c 检测网络状态
- linux connect网络连接检测
- 【Linux网络编程】超时检测
- linux 进程自动重启检测脚本
- linux shell脚本检测摄像头个数
- python脚本检测linux进程是否运行
- linux 进程自动重启检测脚本
- java基础.集合.其他对象.初识
- 基于R-CNN的物体检测(笔记标注版)
- CFileDialog一直报错说没有实例
- Oracle-索引
- 离散数学笔记二
- linux网络检测脚本
- MySQL-windows
- python3 查看端口打开情况
- 什么样的对象才能作为STL容器的元素
- PhotoShopCS5自学笔记
- C 知识积累
- java 阿里面试常见30道题目汇总
- 5062456.html
- DataBinding使用指南