各位爹,请教一个 golang 的问题!

51 天前
 eber

各位 golang 大佬(爹),上午好!我有个菜鸡问题:如何使用 golang 的 exec.Command()函数执行 sudo ?

背景:小弟在使用 chromedp 做一个爬虫,目前一切正常,唯一的遗憾就是每次运行之前需要手动在 macOS 的终端执行 sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=19222 必须加 sudo 才能打开 chrome 调试窗口。因为 golang 可以执行终端命令,所以我想使用代码去唤醒调试窗口,但是测试下来好像无法全自动调用 sudo 命令(不输入密码或密码怎么传进去)。

2820 次点击
所在节点    Go 编程语言
29 条回复
NessajCN
51 天前
你用 sudo 执行爬虫程序不就好了
imPrk
51 天前
cmd := exec.Command("sudo", "ls", "/root")
eber
51 天前
@imPrk 试过了,不行。。。会一直卡住,因为没输入密码。
pkoukk
51 天前
go build -o main .
sudo ./main
eber
51 天前
@NessajCN 刚试了一下,sudo 执行程序还是不会弹出 chrome 调试页。19222 也没有在监听。
fengxsong
51 天前
你把运行用户的 sudo 设置 NOPASSWD 不就行了嘛。。
imPrk
51 天前
@eber 你确定你的 Go 程式有使用 root 身份运行吗
JEME
51 天前
使用 pty 相关的库,应该可以?
aloxaf
51 天前
用 sudo -S 可以从标准输入接收密码,然后你就可以正常把密码传进去了
yanghanlin
51 天前
sudo -S 然后密码通过 stdin 传进去?
eber
51 天前
@NessajCN 抱歉,抱歉。。。找到问题了,确实 sudo 运行程序可以唤醒调试页面。应该是 chrome 路径问题。。。/Applications/Google Chrome.app/Contents/MacOS/Google Chrome 空格不能加转译。。。
Yangsh853
51 天前
在 sudoers 给用户加 NOPASSWD ,就不用输密码了
eber
51 天前
是的,这样确实可以,但是需要提前修改用户属性不太好。
@fengxsong
@Yangsh853
eber
51 天前
@JEME 我去试一下先,有结果了我来说一下。
eber
51 天前
@yanghanlin
@aloxaf 也是个不错方法。
somebody1
51 天前
这是学到精髓了呀,上周的那个帖子上大分!
jdkxnktkdkxod
51 天前
sudo -A
proxychains
51 天前
提问的艺术
cat9life
51 天前
辈分有点乱啊,一会爹一会自称小弟。(开个玩笑..
lele140
51 天前
现在 问问题都这么卷了吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX