我试图从我的C++代码远程登录到多个服务器/机器,并且我必须远程执行一些命令。根据我的经验,我决定使用ssh。但是,现在我想通过(命令)加载和发送我的所有命令。请看下面的代码。
#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;
}现在,我的问题是:
system("ssh 172.10.10.4 ,123456")
password=123456?如果是,怎么做?发布于 2016-02-13 14:00:54
只有为要登录的计算机设置了公钥,才能调用system("ssh ...")。
原因是system()不允许您与您启动的进程进行交互,它只会生成一个新的shell并将相关的字符串传递给shell以供执行,而ssh本身并没有将密码传递给应用程序的方法,您必须实际输入它(如果使用popen,则必须将其发送到ssh的stdin端--但我确实认为,在自动化系统中,公钥是正确的方法)。
如果您仍然需要与创建的进程进行交互,您将需要使用类似于popen的东西,这将允许您在stdin上读取stdout或写入--甚至如果您需要对stdin和stdout进行操作的能力,甚至还可以使用pipe()和fork()。
https://stackoverflow.com/questions/35380751
复制相似问题