0
点赞
收藏
分享

微信扫一扫

Go执行shell指令的最佳方式


Go执行shell指令的最佳方式

文章目录

  • ​​Go执行shell指令的最佳方式​​
  • ​​1、前言​​
  • ​​2、代码示例​​

1、前言

通过Go执行shell命令在网上有很多方式,但是在调试的时候往往发现这些方式存在或多或少的问题,最终在这里找到一个目前感觉最佳的方式,出错后的提示信息足够完整。

2、代码示例

这里以修改ip的命令为例:

package main

import (
"fmt"
"os/exec"
)

func main() {
cmd := exec.Command("ifconfig", "ens33", "40.40.40.155",
"netmask", "255.255.255.0")
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + string(output))
}
fmt.Println(string(output))
}

当编译后直接运行时报错:

exit status 255: SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作

SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作

这样我们就可以大致猜测出来是运行权限的问题,然后使用root权限运行程序即可解决,使用一些其它的方式给到的错误都是什么exit 1或者exit 255之类的状态值,不方便调试。如果你在使用时发现:

execute command failed:exit status 1

这样的错误,那么就换成上面这种使用方式进行处理吧。


举报

相关推荐

0 条评论