gpt4 book ai didi

go - 如何执行命令行

转载 作者:IT王子 更新时间:2023-10-29 02:30:53 25 4
gpt4 key购买 nike

我正在尝试执行两个命令:

  • sudo ip link set can0 type can bitrate 500000
  • sudo ip link set can type can restart-ms 1000

这是我的代码:

package main

import (
"log"
"os"
"os/exec"
)

func main(/*in string*/)/*(out bool)*/ {

in :="setup"

switch in {

case "setup":
bringUp()
setRestart()
log.Println("can0 is brought up")
//return true

case "restart":
setRestart()
log.Println("can0 is restarted")
//return true

default:
log.Println("System cannot be brought up, contact administrator")
//return false
}
}


func bringUp (){
cmd := exec.Command("sh", "-c", "sudo ip link set can0 type can bitrate 500000")

cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

err := cmd.Run()

if err != nil {
log.Fatal(err)
}
}

func setRestart(){
cmd:= exec.Command("sh", "-c", "sudo ip link set can type can restart-ms 10000")

cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

err := cmd.Run()

if err != nil{
log.Fatal(err)
}
}

每当我执行它时,它都会进入“设置”案例并开始执行 bringUp 函数,但它永远无法完成执行,我不明白为什么。我正在研究树莓派。

最佳答案

您的 go 代码看起来是正确的。我相信问题在于 sudo。我用 sudo touch/tmp/bringUp-executed 等良性命令替换了您的命令。代码确实提示输入我的 sudo 密码 - 但一旦输入 - 完成后没有问题。

您是否以 headless 方式运行您的 go-executable?因此无法访问控制台输入密码?我建议为您的任何根级任务创建包装器脚本,并为它们提供无密码 sudoer 权限,如概述 here .

关于go - 如何执行命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com