码迷,mamicode.com
首页 > 其他好文 > 详细

使用 go 写一个检测 tcp udp 状态的包

时间:2015-01-06 15:33:29      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:go 运维代码

因为要跟着 dockerpool 的基友写 Docker 管理的程序,所以今年的目标是学习 go 语言。

看完 go 的入门教程,高深的代码还看不懂,所以决定先尝试写一些平常可以用的东西,mac 底下的 nc 命令可以检测很多东西,但是用着不习惯,所以决定写一个 check tcp udp 的包。

package main

import (
    "flag"
    "fmt"
    "net"
)

const version = "0.1.0"

var Input_protocol = flag.String("p", "tcp", "The protocol you want to check")

func tcp(url string) int {
    _, err := net.Dial("tcp", url)
    if err != nil {
        fmt.Println(err)
        return 0
    } else {
        return 1
    }
}

func udp(url string) int {
    _, err := net.Dial("udp", url)
    if err != nil {
        fmt.Println(err)
        return 0
    } else {
        return 1
    }
}

func main() {
    flag.Parse()
    if flag.NArg() < 1 {
        useage := "使用示例: check -p tcp 192.168.7.26:22 或者 check -p udp 192.168.7.23:123 "
        fmt.Println(useage)
        return
    }
    p := *Input_protocol
    switch {
    case p == "tcp":
        r := tcp(flag.Args()[0])
        fmt.Println(r)
    case p == "udp":
        r := udp(flag.Args()[0])
        fmt.Println(r)
    }
}

go build go install 之后,就可以再命令行中使用了。

$ go build
$ go install
$ check
使用示例: check -p tcp 192.168.7.26:22 或者 check -p udp 192.168.7.23:123
$ check -p tcp www.sina.com:80
1
$ check -p tcp www.sina.com:88
dial tcp 61.172.201.20:88: connection refused
0

使用 go 写一个检测 tcp udp 状态的包

标签:go 运维代码

原文地址:http://blog.csdn.net/smallfish1983/article/details/42459601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!