如何在 C++ 中使用“sudo -S”命令绕过终端输入密码?

如何在 C++ 中使用“sudo -S”命令绕过终端输入密码?

我需要以 root 身份运行以下命令,而不需要在 Linux 终端上通过任何“sudo”。 。 (请不要发表“安全”评论……)

“hcitool抄送地址”

使用“sudo -S”选项应该可以完成任务。

我已获得用 c 编写的附加 sudo/pipe 代码。

#包括 #包括 #包括

int main() { std::string userPass{"myPassword"}; std::string 命令{"sudo -S ps -lf 2>/dev/null <<_EOF\n" + userPass + "\n_EOF"}; FILE *pipe = popen(command.c_str(), "r");字符*行= NULL; size_t 长度 = 0; ssize_t rlen; while( (rlen = getline(&line, &len, pipeline)) > 0) { line[--rlen] = '\0'; // 修剪尾随换行符 std::cout << line << '\n'; }

pclose(pipe);
free(line);

}

这就是我到目前为止所拥有的

FILE  *cmd;
int    status;

QFile *pipe;

cmd = popen("/usr/bin/sudo -S id -un 2>/dev/null", "w");

// MODIFY  for c++
QString Password = "q";
QString Command =" sudo -S ps -lf 2>/dev/null <<_EOF\n" + Password + "\n_EOF";

// std::string userPass{"myPassword"};
// std::string command{"sudo -S ps -lf 2>/dev/null <<_EOF\n" + userPass + "\n_EOF"};
pipe->open ???


I could use help finishing converting the c code into C++.

我正在使用 Qt ,但通用 C++ 代码就可以了。

我不明白“选项”“ps” - 我在 man doc 中找不到它。我不确定“cmd 文件”在示例中如何工作。

谢谢

相关内容