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

10
我正在远程服务器上安装证书,并且想要在覆盖证书之前检查它们是否存在。该服务器只允许通过ssh公钥进行非root用户访问。我可以使用sudo -s命令将shell切换到root用户。由于/etc/ssl不可读取,因此需要root权限。 该程序是用python fabric开发的,因此任何能够通过sudo命令在shell中运行的命令都可以使用。 在这种情况下,我不介意在提示中输入密码。 TL;DR: 我需要一个sh命令,可以在以if fabric.sudo(sh_command) == True:方式运行时告诉我的Python程序远程文件(或目录)是否存在(或类似操作)。
谢谢!
3个回答

36
from fabric.contrib.files import exists

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

链接到文档:http://docs.fabfile.org/en/latest/api/contrib/files.html?highlight=exists#fabric.contrib.files.exists - ecstaticpeon
此函数已经从fabric v2.0移至patchwork库 https://github.com/fabric/patchwork/blob/master/patchwork/files.py - Ben

1
也许不是最简单的方法,但是我脑海中想到的建议是:
ssh user@server 'bash -c "if [ -e /path/to/remote/file ] ; then true ; fi"'

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接