使用system(char *命令)和执行命令ssh远程登录到服务器?

时间:2016-02-13 13:51:37

标签: c++ linux ssh system

熟悉SSHSystem(const char * command)的人执行shell命令!??

我试图从我的C ++代码远程登录到多个服务器/机器,我必须远程执行一些命令。根据我的经验,我决定使用ssh。但是,现在我想通过System(const char * command)加载并发送我的所有命令。请参阅下面的代码..

#include "all my headers"
int main()
{
   system("ssh 172.10.10.1");//login to server_one, password=123
   system("ssh 172.10.10.2");//login to server_two, password=1234
   system("ssh 172.10.10.3");//login to server_three,password=12345
   system("ssh 172.10.10.4");//login to server_four, password=123456
  return 0;
}

现在,我的问题是:

  1. 我可以加载并发送服务器的remote_ip和密码 同时,例如:system("ssh 172.10.10.4 ,123456")
    密码= 123456?如果有,怎么样?
  2. 如果完成上述(1),我将有另一个问题。感谢。

1 个答案:

答案 0 :(得分:2)

如果您为要登录的计算机设置了公钥,则只能调用if unit in ['I', 'i']: totalWeight = convertWeight(totalWeight) else: totalWeight = totalWeight

原因是system("ssh ...")不允许您与您启动的进程交互,它只会生成一个新的shell并将相关的字符串传递给shell执行,而system()会执行本身没有办法将密码传递给应用程序,你必须实际输入密码(如果使用ssh,则将其发送到ssh的标准输出端 - 但我真的建议公开密钥是进入自动化系统的正确方法。)

如果您仍然需要与创建的流程进行互动,则需要使用popen之类的内容,这样您就可以阅读popen或写入stdout - 或者如果您需要能够同时对stdinpipe()执行操作,则需fork()stdin