bash - 使用 os.exec 执行“su”返回错误
问题描述
据我了解,Go 的 exec 函数直接使用内核执行命令,而不是创建本地终端会话或类似的东西。不幸的是,我需要使用该su
命令来运行脚本,该脚本涉及运行su
然后通过标准输入管道输入 root 密码。
是的,我必须使用su
(禁用设备上的业务用例sudo
),而且我还需要能够输入密码。
到目前为止,我的代码如下
rootRun := exec.Command("su", "-c", "whoami")
rootRun.Stderr = os.Stdout
rootRun.Stdout = os.Stdout
err = rootRun.Run()
check(err)
错误是
su: must be run from a terminal
panic: exit status 1
我能想到的唯一方法是用 go 模拟机器上的终端(我不知道可以使用哪些包,如果你知道的话请告诉我)或创建某种本地 ssh 连接给了我一个 pty 会话可以使用,但这不是很好,因为设备有时会禁用 ssh。希望有另一种解决方法,请告诉我。
解决方案
推荐阅读
- android - 如何在 Jetpack Compose 中管理 2D 网格 UI 的状态?
- amazon-web-services - 使用 POSTMan 调用 APIGateway 时不执行请求验证
- javascript - 在 Node.js 中承诺在代码中存储和使用 JSON
- storage - 谷歌文档如何存储在磁盘上?
- python - 在 xml 字符串 python 中格式化动态值时出错?
- angular - 如何从角度路由中获取电子邮件?
- javascript - 将两个变量加在一起/查找
- c - 使用 gcc 编译器在 C 中未定义对“LoadLibraryA@4”错误的引用
- python - sklearn找到线性回归系数的名称
- android - 通过 Android Studio 安装的 Android 应用不会独立安装