:golang exec.command 登录主机 执行多条命令 uname -n 和 ps aux | grep "named" | grep -v grep | wc -l命令 并判断返回结果 请举例
时间: 2024-02-22 13:59:09 浏览: 210
exec命令 调用并执行指定的命令
好的,以下是一个使用 Golang 中的 exec 包登录主机并执行多条命令的示例代码:
```go
package main
import (
"fmt"
"os/exec"
"strings"
)
func main() {
// 定义登录主机的命令
sshCmd := "ssh user@hostname"
// 定义要执行的命令
cmd1 := "uname -n"
cmd2 := "ps aux | grep \"named\" | grep -v grep | wc -l"
// 使用 exec.Command 方法创建一个 cmd 对象
cmd := exec.Command("bash", "-c", sshCmd + " \"" + cmd1 + ";" + cmd2 + "\"")
// 执行命令并获取输出结果
output, err := cmd.Output()
if err != nil {
fmt.Println("执行命令出错:", err)
return
}
// 将输出结果转换为字符串并按行分割
lines := strings.Split(string(output), "\n")
// 获取第一条命令的输出结果
result1 := strings.TrimSpace(lines[0])
// 获取第二条命令的输出结果并转换为整数
result2 := strings.TrimSpace(lines[1])
count, err := strconv.Atoi(result2)
if err != nil {
fmt.Println("转换输出结果出错:", err)
return
}
// 输出结果
fmt.Println("第一条命令的输出结果:", result1)
fmt.Println("第二条命令的输出结果:", count)
// 根据命令输出结果进行判断
if result1 == "hostname" && count > 0 {
fmt.Println("命令执行成功!")
} else {
fmt.Println("命令执行失败!")
}
}
```
这个示例代码中,我们首先定义了登录主机的命令 `sshCmd`,然后定义了要执行的两条命令 `cmd1` 和 `cmd2`,使用 `exec.Command` 方法创建一个 cmd 对象,并在其中执行这两条命令,最后将命令输出结果转换为字符串并按行分割,获取每条命令的输出结果,进行判断并输出结果。
阅读全文