【问题标题】:How to execute shell commands and interact with the output on linux using C++?如何使用 C++ 在 Linux 上执行 shell 命令并与输出交互?
【发布时间】:2016-04-06 20:44:48
【问题描述】:

我使用 Eclipse 并尝试执行写在 cpp 文件中的shell commands

据我所知,我可以使用system()函数在cpp中执行shell command,但是如何在终端响应提示呢?

我知道在某个命令之后,shell 会要求输入密码,我必须把它输入那里。起初我试图将我的密码放入第二个system() 函数,但它不起作用。虽然我在两个 system() 函数调用之间放置了一个 sleep 调用,但它不起作用:

system(DO)// after this command the shell asks for a password
sleep(10)
system(Password)`

如何输入密码?

【问题讨论】:

  • 你的应用是终端应用吗?还是图形化的?

标签: c++ linux shell terminal


【解决方案1】:

您可以在第一条system 指令中传递密码。如果您的命令类似于getPassword,那么它将是:

system("echo yourPassword | getPassword");

虽然在程序中包含纯密码是危险的。

更新:

对于 SSH,它不起作用,但对于从控制台获取参数的常见命令,例如 apt-get,它会起作用。使用sshpass 可以正常从标准输入获取密码参数。 另一种选择是Tcl中的expect,它可以自动和有条件地输入SSH密码。

再次重申,完全不建议使用纯文本作为密码。考虑改用公钥认证。

【讨论】:

  • 不适用于 ssh - 它从控制台而不是标准输入获取密码。 “ps -ef”会显示你的密码。
猜你喜欢
  • 2014-02-10
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多