【发布时间】:2017-11-08 10:03:21
【问题描述】:
我正在尝试制作一个简单的包来将 SSH 命令发送到服务器。
我有以下代码:
type Connection *ssh.Client
func Connect(addr, user, password string) (conn Connection, err error) {
sshConfig := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{
ssh.Password(password),
},
HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),
}
conn, err = ssh.Dial("tcp", addr, sshConfig)
return
}
func (conn Connection) SendCommand() ([]byte, error) {
session, err := (*ssh.Client)(conn).NewSession()
// ...
}
我的问题在于func (conn Connection) SendCommand() ([]byte, error) 和session, err := (*ssh.Client)(conn).NewSession() 这两行。
我无法从覆盖的Connection 类型中弄清楚如何使用可用于*ssh.Client 的方法。
我知道我需要进行一些转换,并且使用 ssh.Client(*conn).NewSession() 会起作用,但它会复制 *ssh.Client 的值,这似乎不是正确的方法。
在使用我的自定义 type Connection *ssh.Client 类型时,应该如何访问可用于 *ssh.Client 的方法?
【问题讨论】:
标签: pointers go casting type-conversion