跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个 golang 使用 exec 调用 windwos cmd 命令的问题
未分類
16 9 月 2020

请教一个 golang 使用 exec 调用 windwos cmd 命令的问题

请教一个 golang 使用 exec 调用 windwos cmd 命令的问题

資深大佬 : yanzhiling2001 4

cmd 里直接下面命令是设置 ip 的:

netsh interface ip set address "本地连接 6" source= static 192.168.1.110 255.255.255.0 192.168.1.1 

当前有个用 golang 设置 ip 的需求,使用 exec.command 调用 cmd 命令,谷歌一圈 exec.command,简单的 del 文件是没问题,拼设置 ip 的命令一直报错:

C:UsersAdministratorDesktop>go run setip.go Error:  exit status 1 

代码如下

func main() {  c := exec.Command("cmd", "/C", "netsh interface ip set address", "以太网 6", "static", "192.168.1.110", "255.255.255.0", "192.168.1.1", "1")  if err := c.Run(); err != nil {  fmt.Println("Error: ", err)  } 

}

请教一下各位老大,该怎么写合适 请教一个 golang 使用 exec 调用 windwos cmd 命令的问题

大佬有話說 (15)

  • 資深大佬 : fishCatcher

    “以太网 6″改成`”以太网 6″`

  • 資深大佬 : fishCatcher

    而且你不能把 netsh interface ip set address 放到一个参数上吧,每个空个都是一个单独参数

  • 主 資深大佬 : yanzhiling2001

    @fishCatcher 感谢回复,我试试

  • 資深大佬 : ysc3839

    1. netsh 本来就是一个可执行文件,可以直接执行 netsh,没必要多套一层 cmd 来执行。

    2. Windows 和 Unix 不同,命令行参数传递的是一个字符串,而不是 Unix 那样传递字符串数组,应用程序会自己把一个字符串解析成字符串数组。
    在这里我估计你把整个命令行直接通过一个参数传过去也没问题,因为你传多个参数,最终还是会拼接在一起的。

  • 資深大佬 : WordTian

    建议把 netsh 之后的字符串数组拼成一个长字符串,我之前在 linux 上分开写,也报找不到参数

  • 資深大佬 : kangsheng9527

    是不是想做 v 什么 n ???
    这种方式 v 什么 n 很明显特征很容易暴露很容易识别。。。带虚拟网卡的也是。。。

  • 主 資深大佬 : yanzhiling2001

    @kangsheng9527 不是,因为种种原因工厂内网的一批电脑 重启之后是 DHCP 自动获取,本来该是固定 IP 的,为了避免重启手动设置 ip,写一个开机小脚本

  • 資深大佬 : ysc3839

    @yanzhiling2001 写脚本的话可以考虑使用 cmd 或者 PowerShell 。

  • 主 資深大佬 : yanzhiling2001

    @ysc3839 开始考虑过,如果只是简单的设置 ip 就用 cmd 了。主要是内网的划分经常会变,每次变的时候会给一个包含 ip 信息的 json 文件,不擅长 cmd 脚本,用 go 写写了

  • 主 資深大佬 : yanzhiling2001

    @ysc3839 大佬白天有空吗,20 红包求解决这个问题,试了好一会还是不行

  • 主 資深大佬 : yanzhiling2001

    @ysc3839 [![]( https://pic.downk.cc/item/5f6f5d69160a154a6774ecf8.jpg)]( https://pic.downk.cc/item/5f6f5d69160a154a6774ecf8.jpg)

  • 資深大佬 : ysc3839

    @yanzhiling2001 自己测试了一下,这样就可以了
    exec.Command(“netsh”, “interface”, “ip”, “set”, “address”, “Ethernet”, “static”, “192.168.1.110”, “255.255.255.0”, “192.168.1.1”, “1”)

  • 主 資深大佬 : yanzhiling2001

    @ysc3839 大佬 NB 大佬回复个收款码。
    我勒个擦,我白天也是这么写过,哪里出错了一直没有测试成功

  • 資深大佬 : ysc3839

    @yanzhiling2001 我不收钱。
    可能是没有管理员权限?

  • 主 資深大佬 : yanzhiling2001

    @ysc3839 大佬不用客气,这是我该交的学费。
    可能是,之前一直在 cmd 里执行的,刚刚在 vscode 的 terminal 里执行的,vscode 是有 administrator 权限。
    大佬请留下收款码,白天加个鸡腿。感谢帮助。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具