linux网络检测脚本

#!/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 $@
TestBandwitdth脚本用于测试带宽; //***************************************************************************************** 用法: 1.将“TestBandwidth.tar.gz”脚本copy到服务器上解压后,进入目录; 2.编辑“TestURL.sh”:灌流量; 上行:wget http://*** 下行:post http://*** 3.如果修改了步骤2,执行此步,否则跳过: 修改 TestBandwidth.tar.gz 脚本中的倒数5-6行; kill -9 `ps -ef|grep wget|grep http|awk '{print $2}'` //修改kill关键字:grep wget rm zhuxian* //修改rm关键字:zhuxian* 4.修改“bandwidth.sh”:修改检测网卡: netcard=em1 5.使用后台运行命令执行:nohup ./bandwidth.sh (注:停止脚本 pkill -9 bandwidth.sh && pkill -9 wget) 6.查看结果:BandwitdthResult.txt //********************************************************* 测试流量:清空“TestURL.sh”文件时执行就是测试流量 //***************************************************************************************** 脚本说明: 1.调用TestURL.sh脚本启动灌流量操作; 2.等待10s(防止刚开始下载时的流量冲高); 3.取当前网卡已接收的上行、下行数据流量; 4.等待5s; 5.取当前网卡已接收的上行、下行数据流量; 6.计算两次取值中间的差值,算平均值; 7.等待10s,开始下一次小循环(循环4次)(一次小循环70s); 8.清除下载进程,清除下载文件,清除下载日志; 9.等待3495s,开始下一次大循环(一次大循环1h);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值