需求
- ping 1s/次 ping 网络是否通讯,将结果保存到log
- dstat 1s/次 将结果保存到log
- 依赖包,自动安装
关键
- ping 命令输出带时间 log, st
- dstat 数据文件 ,使用–output 报错,Types 没有
- 使用离线安装包,sudo apt-get download 下载deb包
代码实现
脚本实现如下:
#!/usr/bin/env bash
# ./collect_info.sh start
# ./collect_info.sh stop
# ./collect_info.sh clean
export LANG="zh_CN.UTF-8"
optype=$1
LOG_PATH="log"
dstat_num=0
st_num=0
function start()
{
echo "start begin"
if [ -d "${LOG_PATH}" ];then
clean
fi
mkdir -p ${LOG_PATH}
# 进程数量
mkdir -p $LOG_PATH
dstat -t -a > ${LOG_PATH}/dstat.log &
ping baidu.com | ts > ${LOG_PATH}/2_ping.log &
ping baidu.com | ts > ${LOG_PATH}/4_ping.log &
echo "dstat and ping is started ... "
}
function stop()
{
PROGNAME=$1
# 进程数量
prog_num=`ps -ef | grep $PROGNAME | grep -v grep | wc -l`
if [ $prog_num -eq 0 ] ; then
echo "$PROGNAME is stopped"
return
fi
# 查出所有进程 id
prog_ids=`ps -ef | grep $PROGNAME | grep -v grep | awk '{print $2}'`
for pid in $prog_ids;
do
kill $pid;
done
echo "stop $PROGNAME"
}
function clean()
{
rm ${LOG_PATH} -rf
}
function check()
{
local dpkg_num
dpkg_num=`dpkg -l | grep $1 | wc -l`
echo $dpkg_num
return $?
}
function install()
{
sudo dpkg -i $1
}
if [ $(check "dstat") -eq 0 ]; then
echo "dstat no install, install doing ... "
install "./deb/dstat_0.7.4-6_all.deb ./deb/python3-six_1.14.0-2_all.deb"
fi
if [ $(check "moreutils") -eq 0 ]; then
echo "st no install, install doing ... "
install "./deb/lib*.deb ./deb/moreutils_0.63-1_amd64.deb"
fi
case "$optype" in
start)
start
;;
stop)
stop "ping"
stop "dstat"
;;
clean)
clean
;;
*)
echo "Only support start|stop|clean"
exit 1
esac