如何用命令行查询 max os x 的网络上下行

首先要确定当前使用的是哪个网卡

这段 sh 可以确定当前激活的网卡

EN0=`ifconfig en0 | grep 'status' | awk '{print $2}'`
EN1=`ifconfig en1 | grep 'status' | awk '{print $2}'`
if [ $EN0 == 'active' ] ; then
INTF=en0
elif [ $EN1 == 'active' ] ; then
INTF=en1
fi
echo $INTF

直接执行这段可以去到这个网卡的上下行. 通过中间休息一秒, 然后算两个的差值来计算

INTERFACE=en0;

SAMPLE_A=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);

sleep 1;

SAMPLE_B=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);

BANDWIDTH_USAGE=(`echo "2k ${SAMPLE_B![pic](0)} ${SAMPLE_A![pic](0)} - 1024 / p" "${SAMPLE_B![pic](1)} ${SAMPLE_A![pic](1)} - 1024 / p" | dc`);echo " in: ${BANDWIDTH_USAGE![pic](0)} Kb/secnout: ${BANDWIDTH_USAGE![pic](1)} Kb/sec";

两个可以整合起来

EN0=`ifconfig en0 | grep 'status' | awk '{print $2}'`
EN1=`ifconfig en1 | grep 'status' | awk '{print $2}'`
if [ $EN0 == 'active' ] ; then
INTF=en0
elif [ $EN1 == 'active' ] ; then
INTF=en1
fi

INTERFACE=$INTF;

SAMPLE_A=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);

sleep 1;

SAMPLE_B=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);

BANDWIDTH_USAGE=(`echo "2k ${SAMPLE_B![pic](0)} ${SAMPLE_A![pic](0)} - 1024 / p" "${SAMPLE_B![pic](1)} ${SAMPLE_A![pic](1)} - 1024 / p" | dc`);echo " in: ${BANDWIDTH_USAGE![pic](0)} Kb/secnout: ${BANDWIDTH_USAGE![pic](1)} Kb/sec";

这个脚本只是判断了 en0 和 en1 , mac 的网卡实在搞不清楚, 就先暂时这样吧.

我们的监控,只需要取当前的, 不需要本地 sleep.

每次都要查两次, 也没必要, 再次修改

ACTIVE=`ifconfig en0 | grep 'status' | awk '{print $2}'`
if [ $ACTIVE == 'active' ] ; then
    INTERFACE=en0
else
    INTERFACE=en1
fi
/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'