golang 通过ssh 获取linux系统的目录文件信息
在Golang中,可以使用golang.org/x/crypto/ssh包来通过SSH获取Linux系统的目录文件信息。以下是一个示例代码:
package main
import (
"fmt"
"golang.org/x/crypto/ssh"
"log"
"os"
)
func main() {
// SSH连接配置
config := &ssh.ClientConfig{
User: "username",
Auth: []ssh.AuthMethod{
ssh.Password("password"),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
// SSH连接
client, err := ssh.Dial("tcp", "hostname:22", config)
if err != nil {
log.Fatalf("Failed to dial: %s", err)
}
defer client.Close()
// 执行命令
session, err := client.NewSession()
if err != nil {
log.Fatalf("Failed to create session: %s", err)
}
defer session.Close()
// 切换到目标目录
err = session.Run("cd /path/to/directory && ls -l")
if err != nil {
log.Fatalf("Failed to run command: %s", err)
}
// 获取输出结果
output, err := session.Output("ls -l")
if err != nil {
log.Fatalf("Failed to run command: %s", err)
}
// 打印输出结果
fmt.Println(string(output))
}
在上面的代码中,需要将username、password、hostname和/path/to/directory替换为实际的SSH登录凭据和目标目录路径。然后,使用ssh.Dial函数建立SSH连接,并使用client.NewSession创建一个新的SSH会话。接下来,使用session.Run方法执行命令切换到目标目录并列出目录文件信息。最后,使用session.Output方法获取命令输出结果,并将结果打印出来。
请注意,上述代码中使用的是密码认证方式,如果你的SSH服务器使用其他认证方式(如密钥认证),需要相应地修改config的配置
原文地址: https://www.cveoy.top/t/topic/i0zx 著作权归作者所有。请勿转载和采集!