golang exec.command 登录主机 执行多条命令 uname -n 和 ps aux | grep "named" | grep -v grep | wc -l命令 并判断返回结果 请举例
时间: 2024-02-23 09:59:48 浏览: 161
好的,以下是一个示例代码:
```go
package main
import (
"fmt"
"os/exec"
"strings"
)
func main() {
// 连接的主机地址和用户名
host := "example.com"
user := "username"
// 登录主机执行的命令
cmds := []string{"uname -n", "ps aux | grep 'named' | grep -v grep | wc -l"}
// 构建 SSH 连接命令
sshCmd := fmt.Sprintf("ssh %s@%s \"%s\"", user, host, strings.Join(cmds, ";"))
// 执行 SSH 连接命令
output, err := exec.Command("bash", "-c", sshCmd).Output()
if err != nil {
fmt.Println("执行命令失败:", err)
return
}
// 解析命令输出
results := strings.Split(strings.TrimSpace(string(output)), "\n")
if len(results) != 2 {
fmt.Println("命令输出不符合预期")
return
}
// 获取命令执行结果
uname := results[0]
namedCount := strings.TrimSpace(results[1])
// 打印结果
fmt.Printf("主机名:%s\n", uname)
fmt.Printf("named 进程数量:%s\n", namedCount)
if namedCount != "0" {
fmt.Println("named 进程正在运行")
} else {
fmt.Println("named 进程未运行")
}
}
```
这个示例代码连接到 `example.com` 主机,使用 `username` 用户名登录,然后依次执行 `uname -n` 和 `ps aux | grep 'named' | grep -v grep | wc -l` 命令,并且判断 `named` 进程的数量是否为 0。最后打印出主机名和 `named` 进程数量,以及进程是否运行的信息。
阅读全文