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
库:
-
安装SSH库:
go get golang.org/x/crypto/ssh
-
编写连接代码:
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库功能或定制协议实现。