gpt4 book ai didi

shell - 在 Haskell 中运行 sudo 命令

转载 作者:行者123 更新时间:2023-12-04 04:53:53 24 4
gpt4 key购买 nike

我的笔记本电脑上安装了 ghc 6.12.3 和 Ubuntu 11.04。

我想要一个函数,它接受一些 shell 命令并在 Haskell 中以 super 用户身份执行它们(如 sudo update-manager、sudo iwlist ....)。我知道 System.Process 模块有一些函数,如 createProcess、runInteractiveCommand。但是有一个原始命令或一个 shell 命令,而不是像“sudo update-manager”这样的复合命令。我对这些函数执行“sudo ...”的所有实验都失败了。我用来运行我的 haskell 函数的终端没有响应。

我还查看了 HSH 包。但在我看来,那里导出的函数也不适用于 sudo 命令。

我的猜测是执行“sudo update-manager”之类的命令需要两个过程。一个用于“sudo”,另一个用于“update-manager”。所以我需要调用像“createProcess”这样的函数两次并以某种方式连接它们,以便“update-manager”的第二个进程从“sudo”的第一个进程获得 super 用户权限。

提前感谢您的帮助!

最佳答案

试试 readProcess来自 System.Process

readProcess :: FilePath -- command to run 
-> [String] -- any arguments
-> String -- standard input
-> IO String -- stdout

readProcess forks an external process, reads its standard output strictly, blocking until the process terminates, and returns the output string.



像这样运行它:
readProcess "/usr/bin/sudo" ("-S":someProgram) (passwort++"\n")

这执行 sudo带有选项 -S和程序。 -S需要从标准输入读取密码。密码必须以换行符结尾,因此程序会添加一个。

关于shell - 在 Haskell 中运行 sudo 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6764516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com