当前位置:   article > 正文

golang通过ssh获取主机ip和mac地址_ssh获取指定ip电脑的mac

ssh获取指定ip电脑的mac


一、安装集成ifconfig

linux输入命令
yum install -y net-tools.x86_64

二、ipconfig 查看设备信息

这个en开头的就是你实际的主机地址 inet是ip地址 ether是mac地址
在这里插入图片描述

三、输入命令查询

输入命令看是否能查询
ifconfig ens18 | grep ether | awk ‘{print $2}’
ifconfig ens18 | grep inet | awk ‘{print $2}’
在这里插入图片描述

四、代码部分

代码如下(示例):

import (
	"fmt"
	"strings"
	"golang.org/x/crypto/ssh"
)
type Cli struct {
	user   string
	pwd    string
	addr   string
	client *ssh.Client
}

func NewCli(user, pwd, addr string) Cli {
	return Cli{
		user: user,
		pwd:  pwd,
		addr: addr,
	}
}

// Connect 连接远程服务器
func (c *Cli) Connect() error {
	config := &ssh.ClientConfig{
		User: c.user,
		Auth: []ssh.AuthMethod{
			ssh.Password(c.pwd),
		},
		HostKeyCallback: ssh.InsecureIgnoreHostKey(),
	}
	client, err := ssh.Dial("tcp", c.addr, config)
	if nil != err {
		return fmt.Errorf("connect server error: %w", err)
	}
	c.client = client
	return nil
}

// Run 运行命令
func (c Cli) Run(shell string) (string, error) {
	if c.client == nil {
		if err := c.Connect(); err != nil {
			return "", err
		}
	}

	session, err := c.client.NewSession()
	if err != nil {
		return "", fmt.Errorf("create new session error: %w", err)
	}
	defer session.Close()

	buf, err := session.CombinedOutput(shell)
	return string(buf), err
}

// 调用测试
func main() {
	var (
		username = "root"
		password = "主机密码"
		addr     = "主机地址"
	)

	// 初始化
	client := NewCli(username, password, addr)

	// ssh 并运行脚本
	macsh := "ifconfig ens18 | grep " + "ether" + "| awk '{print $2}'"
	ipsh := "ifconfig ens18 | grep " + "inet " + "| awk '{print $2}'"

	macstr, err := client.Run(macsh)
	ipstr, err := client.Run(ipsh)
	if err != nil {
		log.Printf("failed to run shell,err=[%v]\n", err)
		return
	}
	if ipstr != "" {
		iplist := strings.Split(ipstr, "\n")

		if len(iplist) != 0 {
			ip = iplist[0]

		}

	}
	if macstr != "" {

		mac = strings.Replace(macstr, "\n", "", -1)
	}

	fmt.Println("====mac====", mac)
	fmt.Println("==ip=======", ip)

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/205478
推荐阅读
相关标签
  

闽ICP备14008679号