熟悉SSH和System(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;
}
现在,我的问题是:
system("ssh 172.10.10.4 ,123456")
答案 0 :(得分:2)
如果您为要登录的计算机设置了公钥,则只能调用if unit in ['I', 'i']:
totalWeight = convertWeight(totalWeight)
else:
totalWeight = totalWeight
。
原因是system("ssh ...")
不允许您与您启动的进程交互,它只会生成一个新的shell并将相关的字符串传递给shell执行,而system()
会执行本身没有办法将密码传递给应用程序,你必须实际输入密码(如果使用ssh
,则将其发送到ssh
的标准输出端 - 但我真的建议公开密钥是进入自动化系统的正确方法。)
如果您仍然需要与创建的流程进行互动,则需要使用popen
之类的内容,这样您就可以阅读popen
或写入stdout
- 或者如果您需要能够同时对stdin
和pipe()
执行操作,则需fork()
和stdin
。