Golang Go语言中如何使用 netrasp 连接华为交换机

请问有人使用过 golang 中的 netrasp 库来连接华为交换机运行吗?

我想通过 golang 备份华为交换机备份,虽然 python 可以实现这个功能,但是我想用 golang 。我目前是通过 shell 来实现。


Golang Go语言中如何使用 netrasp 连接华为交换机
4 回复

golang 封装 shell -> 解决 😂

更多关于Golang Go语言中如何使用 netrasp 连接华为交换机的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我是不会告诉你,我就是这样的做的。因为里面有认证信息,所以用 golang 把整个 shell 打包到二进制文件里面。

#2 那你这不靠谱,反编译一样看得到明文的。认证信息部分建议单独提取出来一个文件,go 读取本地的认证文件再执行 shell 。

在Golang中使用net包连接华为交换机通常涉及TCP/IP套接字编程,但需要注意的是,netrasp并非一个标准的Go语言包或广泛认知的协议名称,可能是一个误写或特定环境下的自定义协议/工具。一般而言,连接和管理网络设备(如华为交换机)通常通过SSH、Telnet或SNMP等协议进行。

以下是一个基于SSH连接华为交换机的简化示例,使用golang.org/x/crypto/ssh库:

  1. 安装SSH库

    go get golang.org/x/crypto/ssh
    
  2. 编写连接代码

    package main
    
    import (
        "golang.org/x/crypto/ssh"
        "io"
        "log"
        "os"
    )
    
    func main() {
        config := &ssh.ClientConfig{
            User: "username",
            Auth: []ssh.AuthMethod{
                ssh.Password("password"),
            },
            HostKeyCallback: ssh.InsecureIgnoreHostKey(),
        }
        conn, err := ssh.Dial("tcp", "switch_ip:22", config)
        if err != nil {
            log.Fatalf("Failed to dial: %s", err)
        }
        defer conn.Close()
        session, err := conn.NewSession()
        if err != nil {
            log.Fatalf("Failed to create session: %s", err)
        }
        defer session.Close()
        session.Stdout = os.Stdout
        session.Stderr = os.Stderr
        if err := session.Run("display version"); err != nil {
            log.Fatalf("Failed to run: %s", err)
        }
    }
    

请根据实际需要调整用户名、密码、IP地址和命令。对于更复杂的交互,可以考虑使用更高级的SSH库功能或定制协议实现。

回到顶部