在Python / Bash中测试文件/目录是否存在于SSH / Sudo上

时间:2013-07-29 04:38:09

标签: python bash ssh fabric

我正在远程服务器上安装证书,并希望在覆盖它们之前检查它们是否存在。服务器仅允许通过ssh公钥进行非root访问。我可以sudo -s在shell中创建一次root。 Root是必需的,因为/ etc / ssl不被其他任何人读取。这是在python fabric中开发的,因此可以通过sudo在shell命令中运行的任何命令都可以。在这种情况下,我不介意在提示时键入密码。

TL; DR:我需要一个sh命令,告诉我的python程序在以if fabric.sudo(sh_command) == True:运行时是否存在远程文件(或目录)(或类似的东西) )。

谢谢!

3 个答案:

答案 0 :(得分:36)

from fabric.contrib.files import exists

def foo():
    if exists('/path/to/remote/file', use_sudo=True):
        #command

答案 1 :(得分:1)

也许不是最简单的方法,但在我的脑海中,我建议

ssh user@server 'bash -c "if [ -e /path/to/remote/file ] ; then true ; fi"'

答案 2 :(得分:0)

在Linux中运行test之类的命令,以确定目录是否存在。 fabric.sudo 的输出是一个多行字符串,可以为返回状态进行解析。