赞
踩
通过Go执行shell命令在网上有很多方式,但是在调试的时候往往发现这些方式存在或多或少的问题,最终在这里找到一个目前感觉最佳的方式,出错后的提示信息足够完整。
这里以修改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
这样的错误,那么就换成上面这种使用方式进行处理吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。