Golang实现一个批量自动化执行树莓派指令的软件(8)辅助模块-远程IP端口是否开放连接(TCP)

简介

基于 上篇 Golang实现一个批量自动化执行树莓派指令的软件(7)辅助模块-本地活动网络, 看看本地活动网络接口网络里面有哪些设备是支持ssh网络的。

环境描述

运行环境: Windows, 基于Golang, 暂时没有使用什么不可跨平台接口, 理论上支持Linux/MacOS
目标终端:树莓派DebianOS(主要做用它测试)

实现

func IsRemoteNetworkAlive(ipv4 string, port uint, timeout time.Duration) bool {

	address := net.JoinHostPort(ipv4, fmt.Sprintf("%d", port))

	conn, err := net.DialTimeout("tcp", address, timeout)
	if err != nil {
		//fmt.Printf("Could not connect to host: %s\n", err)
		return false
	} else {
		defer conn.Close()
		//fmt.Printf("Successfully connected to host: %s\n", ipv4)
		return true
	}
}

测试用例

func TestIsRemoteNetworkAlive(t *testing.T) {
	var (
		ipv4PrefixStr   string
		ipv4Str         string
		idx             int
		interfaces, err = GetLocalActivityNetworkInterfaces()
		ipMin           = 1
		ipMax           = 255

		waiter sync.WaitGroup
	)

	if nil != err {
		fmt.Println("get lcoal activity network fail, ", err.Error())
		return
	}
	for _, intf := range interfaces {
		if 0 >= len(intf.IPv4) {
			continue
		}
		idx = strings.LastIndex(intf.IPv4, ".")
		ipv4PrefixStr = intf.IPv4[:idx+1]
		for ipIndex := ipMin; ipIndex < ipMax; ipIndex++ {
			ipv4Str = fmt.Sprintf("%s%d", ipv4PrefixStr, ipIndex+1)
			waiter.Add(1)
			go func(ip string) {
				if IsRemoteNetworkAlive(ip, 22, time.Second) {
					fmt.Println(ip, "is Alive.")
				}
				waiter.Done()
			}(ipv4Str)
		}
	}
	waiter.Wait()
}

代码源

https://gitee.com/grayhsu/ssh_remote_access

其他

参考

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 07:16:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 07:16:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 07:16:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 07:16:04       20 阅读

热门阅读

  1. Python爬虫-车主之家详情页汽车数据

    2024-04-28 07:16:04       12 阅读
  2. (python)动态规划

    2024-04-28 07:16:04       35 阅读
  3. springBoot加载配置文件

    2024-04-28 07:16:04       32 阅读
  4. websocket集成文档

    2024-04-28 07:16:04       13 阅读
  5. 部署接入 M3E和chatglm2-m3e文本向量模型

    2024-04-28 07:16:04       13 阅读
  6. Docker容器配置进阶

    2024-04-28 07:16:04       42 阅读
  7. 数据结构——复杂度(时间,空间)

    2024-04-28 07:16:04       14 阅读
  8. 前端HTML如何不删除div标签将div标签隐藏

    2024-04-28 07:16:04       12 阅读