Golang实现端口检测

Golang实现端口检测,第1张

有时处于内网环境,且不能随意去安装命令,去检测机器端口是否开启就很麻烦,那就意味着shell、python就不好用了,因为需要去安装命令、依赖等,这时使用Go就是一个很好的选择,编译后放在机器,直接就能运行。
在这里,写一个脚本,通过接收ip:port的方式去检测端口

脚本

checkPort.sh

package main

import (
	"fmt"
	"net"
	"os"
	"time"
)



// 获取IP和端口
func getIpPort() []string {
	// 根据接收参数个数,定义动态数组,
	ip_ports := make([]string, len(os.Args)-1)
	i := 0
	for index, value := range os.Args {
		//排除脚本名称
		if index == 0 {
			continue
		}
		//写入数组
		ip_ports[i] = value
		i++
	}
	return ip_ports
}

// 检测端口
func checkPorts(ip_ports []string) {
	now := time.Now().Format("2006-01-02 15:04:05")
	for _, ip_port := range ip_ports {
		// 检测端口
		conn, err := net.DialTimeout("tcp", ip_port, 3*time.Second)
		if err != nil {
			fmt.Println("["+now+"]", ip_port, "端口未开启(fail)!")
		} else {
			if conn != nil {
				fmt.Println("["+now+"]", ip_port, "端口已开启(success)!")
				conn.Close()
			} else {
				fmt.Println("["+now+"]", ip_port, "端口未开启(fail)!")
			}
		}
	}
}

func main() {

	ret := getIpPort()
	checkPorts(ret)
}

编译后在Linux上行

cmd命令行配置环境变量
SET CGO_ENABLE=0 //禁用CGO
SET GOOS=linux //目标平台
SET GOARCH=amd64

编译
go build checkPort.go

编译后就会获取一个checkPort的二进制文件
checkPort

放到linux机器赋权
chmod +x checkPort

运行

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存