Skip to content
示例代码
  • Linux远程执行命名
go
package main

import (
	"fmt"
	"os"
	"os/exec"
)

const (
	hostIp   = "192.168.165.71"
	HostName = "ca-server" // 主机配置了/etc/hosts 才能使用
	sshUser  = "zhangsan"
)

func main() {
	sshConfig := fmt.Sprintf(`
Host %s
    HostName %s
    User %s
    StrictHostKeyChecking no
`, hostIp, hostIp, sshUser)
	tmpConfig := "/tmp/ssh_onfig"
	err := os.WriteFile(tmpConfig, []byte(sshConfig), 0600)
	if err != nil {
		fmt.Printf("Error writing SSH config: %v\n", err)
		return
	}
	// 远程执行命令(scp命令同理)
	sshCmd := exec.Command("ssh", "-F", tmpConfig, hostIp, "touch ~/testssh.txt")
	sshCmd.Stdout = os.Stdout
	sshCmd.Stderr = os.Stderr

	err = sshCmd.Run()
	if err != nil {
		fmt.Printf("run ssh command error: %v\n", err.Error())
		return
	}
	fmt.Println("run ssh command success")
	if err := os.Remove(tmpConfig); err != nil {
		fmt.Printf("清理: %v 失败\n", tmpConfig)
		return
	}
}

欢迎来到 Laazua 的站点