首页 > 其他分享 >使用Golang实现ping检测主机在线的功能

使用Golang实现ping检测主机在线的功能

时间:2024-01-30 12:23:33浏览次数:16  
标签:pinger err 主机 fmt ipaddr Golang Printf ping

使用"github.com/go-ping/ping"这个第三方库可以非常简单的实现ping功能

package main

import (
    "fmt"
    "os"
    "time"

    "github.com/go-ping/ping"
)

func CheckHostOnline(ipaddr string) bool {
    pinger, err := ping.NewPinger(ipaddr)
    if err != nil {
        fmt.Println(err)
        return false
    }

    pinger.SetPrivileged(true)
    pinger.Count = 1  //ping包数量
    pinger.Timeout = time.Millisecond * 500  //超时
    pinger.Interval = time.Second //发送间隔

    err = pinger.Run()
    if err != nil {
        panic(err)
    }
    stats := pinger.Statistics()

    return stats.PacketsRecv > 0
}

func main() {
    if len(os.Args) < 2 {
        fmt.Println("Please provide the target IP address.")
        return
    }

    ipaddr := os.Args[1] // 获取命令行参数作为要检查的主机IP地址
    fmt.Printf("ping %s\n", ipaddr)
    if CheckHostOnline(ipaddr) {
        fmt.Printf("Host %s is online.\n", ipaddr)
    } else {
        fmt.Printf("Host %s is offline.\n", ipaddr)
    }
}

 

标签:pinger,err,主机,fmt,ipaddr,Golang,Printf,ping
From: https://www.cnblogs.com/achillis/p/17996839

相关文章

  • Golang学习--基础语法
    Golang学习Golang的优势极简单部署方式-可直接编译成机器码-不依赖其他库-直接运行即可部署静态类型语言-编译的时候能够检查出隐藏的大多数问题语言层面的并发-天生的基因支持-充分的利用多核强大的标准库-runtime系统调度机制-高效的GC垃圾回收-丰富的标准......
  • 使用Golang编写Windows服务
    主要是使用”github.com/kardianos/service“这个库它已经处理好了与服务管理器的交互细节,并且自带服务安装、卸载、启动、停止等功能,非常齐全了。直接上完整代码:packagemainimport( "log" "os" "syscall" "time" "unsafe" "github.com/kardianos/service")......
  • Prometheus 主机监控管理模板
    systemd管理node_exporterhttps://prometheus.io/download/#node_exporterwgethttps://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz~]#tar-xfnode_exporter-1.7.0.linux-amd64.tar.gznode_exporter-1.7.......
  • Golang中的交叉编译
    Golang中的交叉编译在Golang中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。交叉编译Golang程序的基本步骤如下:指定目标操作系统和工具链并设置对应的环境变量在编译时,需要指定目标......
  • Windows 快速安装 tcping 工具
    首先,请确保你已经安装了Chocolatey。如果没有安装,可以在管理员权限的PowerShell窗口中运行以下命令进行安装:Set-ExecutionPolicyBypass-ScopeProcess-Force;[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.ServicePointManager]::SecurityProtocol-bor......
  • Golang并发控制方式有几种?
    Go语言中的goroutine是一种轻量级的线程,其优点在于占用资源少、切换成本低,能够高效地实现并发操作。但如何对这些并发的goroutine进行控制呢?一提到并发控制,大家最先想到到的是锁。Go中同样提供了锁的相关机制,包括互斥锁sync.Mutex和读写锁sync.RWMutex;除此之外Go还提供了原子操作......
  • golang 遍历目录的两种方式、删除目录的两种方式
    funcmain(){ directory:="/Users/mike/Downloads" //不会递归只会读取当前的单层目录 directories,err:=os.ReadDir(directory) iferr!=nil{ fmt.Println(err) } for_,d:=rangedirectories{ fmt.Println(d.Name(),d.IsDir()) } //会递归遍历所......
  • 【VMware vSAN】使用命令行从vSAN集群中移除ESXi主机并加入到新的vSAN集群。
    说明本文只是陈述了一种方法,不必评判谁对谁错谁好谁坏,选择适合自己的即可。 环境站点名称vCenter版本vSAN集群集群主机主机版本磁盘组vcsa67.lab.comvCenter6.7U3clusteresxi-b1.lab.comesxi-b2.lab.comesxi-b3.lab.comesxi-b4.lab.comESXi6.7U3......
  • Golang 语言入门:基础语法与示例
    引言Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。自2009年推出以来,Go已经成为云计算、微服务、网络服务器等领域的热门选择。其设计哲学是简洁、快速和易于理解,这使得Go语言特别适合当今快速发展的软件行业。Go语言的基本语法......
  • go-carbon v2.3.7 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......