php获取实时带宽,Golang 获取网卡时时带宽,可用于测速

每秒计算一次网卡出口带宽,并保存到指定文件,用于其他程序,如:php、shell读取带宽

那么如果是shell ,为啥不写在shell里面呢?答案是可以的,只是场景不一样,这里用go实现读取一次,然后其他程序可以多任务执行,直接使用结果。

package main

import (

"bytes"

"fmt"

"io/ioutil"

"os"

"os/exec"

"strings"

"time"

)

func main() {

for {

var stdOut, stdErr bytes.Buffer

cmd := exec.Command("sh", "-c","dstat -n 1 1 | awk 'END {print}' | awk '{print $2}'")

cmd.Stdout = &stdOut

cmd.Stderr = &stdErr

err := cmd.Run();

if err!=nil {

fmt.Println(cmd.Stderr,err.Error())

os.Exit(1)

}

fmt.Print(cmd.Stdout)

path := "/workspace/tmp/network-speed.data"

content := stdOut.String()

content = strings.Replace(content, "\n", "", -1)

if content=="0" {

time.Sleep(1*time.Second)

continue

}

if strings.Contains(content, "B") {

content = "1"

} else if strings.Contains(content, "k"){

content = "1"

} else if strings.Contains(content, "M"){

content = strings.Replace(content,"M","",-1)

}

err = ioutil.WriteFile(path, []byte(content), 0666)

if err != nil {

panic(err)

time.Sleep(1*time.Second)

}

}

}

有疑问加站长微信联系(非本文作者)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值