Golang实现端口检测

有时处于内网环境,且不能随意去安装命令,去检测机器端口是否开启就很麻烦,那就意味着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

运行
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Go语言(Golang)是一种开源的编程语言,它具有简洁、高效和并发性强的特点。在Go语言中,函数是一等公民,可以像其他类型的值一样进行传递和操作。 下面是介绍Golang实现函数的几个关键点: 1. 函数定义:使用关键字`func`来定义函数,语法如下: ``` func 函数名(参数列表) 返回值列表 { // 函数体 } ``` 例如,定义一个计算两个整数之和的函数: ``` func add(a, b int) int { return a + b } ``` 2. 函数参数:函数可以接受零个或多个参数,参数之间用逗号分隔。参数可以指定类型,例如`a, b int`表示两个整数类型的参数。如果多个参数的类型相同,可以只在最后一个参数后面指定类型。 例如,定义一个计算两个整数之差的函数: ``` func subtract(a, b int) int { return a - b } ``` 3. 函数返回值:函数可以返回一个或多个值。返回值列表放在函数名后面的括号中,并指定返回值的类型。如果函数没有返回值,可以省略返回值列表。 例如,定义一个计算两个整数之积和商的函数: ``` func multiplyAndDivide(a, b int) (int, float64) { return a * b, float64(a) / float64(b) } ``` 4. 匿名函数:在Go语言中,可以使用匿名函数,即没有函数名的函数。匿名函数可以直接赋值给变量,也可以作为参数传递给其他函数。 例如,定义一个匿名函数并将其赋值给变量: ``` add := func(a, b int) int { return a + b } ``` 5. 函数作为参数和返回值:在Go语言中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。 例如,定义一个接受函数作为参数的函数: ``` func operate(a, b int, operation func(int, int) int) int { return operation(a, b) } ``` 以上是Golang实现函数的基本介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值