使用go寫一個檢測tcpudp狀態的包
因為要跟著 dockerpool 的基友寫 Docker 管理的程式,所以今年的目標是學習 go 語言。
看完 go 的入門教程,高深的代碼還看不懂,所以決定先嘗試寫一些平常可以用的東西,mac 底下的 nc 命令可以檢測很多東西,但是用著不習慣,所以決定寫一個 check tcp udp 的包。
package mainimport ( "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:801$ check -p tcp www.sina.com:88dial tcp 61.172.201.20:88: connection refused0