我有一个C ++模块,其基本工作是检查远程机器中是否存在目录。我正在使用system()
调用。
ssh user@remote-machine [ -d /remote_dir/test]
这样可以很好地给出结果,但间歇性地测试失败(测试目录总是在那里)。
现在可能是什么原因以及如何检查这个。
system()
调用不可靠)。提前致谢。
SKP
答案 0 :(得分:0)
确保您的连接适用于指定的ssh端口:
$ telnet remote-machine 22
它应该显示连接消息,否则什么都没有(意味着SSH不允许通过本地或远程计算机上的IP firwall连接)。
如果不是第一个,则检查凭据以启动" system()"命令。因为如果您使用来自用户" user1"的控制台进行system()调用,但模块是从用户" user2"开始的。在Linux系统中。在这种情况下,访问没有密码的远程服务器的凭据将失败,因为您在例如" user1"中创建了ssh密钥。而不是" user2" - 在/home/(username)/.ssh
中查看。如果是这样调试,请使用
...system('ls -l ~/.ssh');
如果没有文件,则应该为启动此模块的用户创建连接密钥。