2014-10-16 134 views
0

所以我需要能够检查一个盒子上的软件版本,我发现了一个目录,它会是,并试图ssh进入它。到目前为止,我可以ssh成功进入盒子,并进入目录(我想)如何打印一切,在该目录的一侧。这里是我的代码在ssh目录中打印一切python

def CheckVersion(ThreadIP,ThreadPw,port,ThreadUser): 
     ssh = createSSHClient(ThreadIP,ThreadPw,port,ThreadUser) 
     if ssh == 0: 
      print "oh crap I just returned 0" 
     else: 
      stdin,stdout,stderr = ssh.exec_command("PATH='path' && cd/mnt/soft; cat VERSION") 
+1

另一方面,它为什么会返回0而不是抛出异常? – 2014-10-16 18:09:27

+0

因为我真的不知道哈哈,我写了这样的方式,所以我可以杀死线程,这只是一个真正的功能的副本,我拿了很多东西出来,让你们/女孩更容易帮助我大声笑 – 2014-10-16 18:11:30

+0

你应该考虑使用SFTP而不是普通的SSH。 SFTP专门用于读取目录和文件的操作。 – Kenster 2014-10-16 18:20:27

回答

0

试试这个:

stdin,stdout,stderr = ssh.exec_command("PATH='path' && cd/mnt/soft; ls -LR > contents.txt; cat VERSION") 

-L标志将列出包括在其中的符号链接的目录中的那些所有文件。不幸的是,其他linux命令(如find .ls -R等)停止在符号链接中,而无需导航到它们以进一步列出。

如果您有任何问题,请让我知道!

+0

所以我跑的代码和即时通讯没有得到任何错误,但我不能将它应该生成的文本文件(content.txt)我有我的代码在我的桌面和conetent.txt没有显示出来,你认为 – 2014-10-16 19:14:50

+0

所以这可能是处理权限:尝试两件事:“echo {{你的密码}} | sudo -S ls -LR> content.txt”,并通过终端ssh,并运行“ls -LR”并查看你的终端有内容正在生成(并且命令按预期运行)。你能否做这两件事,让我知道会发生什么? :0) – 2014-10-16 20:00:39

+0

另外,您可能需要检查是否需要跳出字符串。 (也知道它会在您正在使用的机器上生成字符串!)如果您有任何问题,请让我知道! – 2014-10-16 20:37:04