将远程(Paramiko)ssh 命令的输出评估为成功/失败布尔值

Sim*_*sov 2 python ssh shell paramiko

我有一个函数来检查文件是否存在,它返回'True'/ 'False',现在我正在将它“转换”为 bool eval(),但是我认为这不是最聪明的解决方案,但我不知道该怎么做它没有不必要的ifs

>>> foo = 'False'
>>> type(eval(foo))
<class 'bool'>
>>> type(foo)
<class 'str'>
Run Code Online (Sandbox Code Playgroud)

例如,我在 ssh 连接的机器上运行这个表达式

"test -e {0} && echo True || echo False".format(self.repo)
Run Code Online (Sandbox Code Playgroud)

像这样,我的结果将是字符串。

def execute(command):
    (_, stdOut, _) = ssh.exec_command(command)
    output = stdOut.read()
    return output.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以实现这一目标?

Bar*_*mar 5

您可以使用ast.literal_eval(). 这比eval()因为它只计算文字而不是任意表达式更安全。

  • 尽管这回答了您提出的问题,但您一开始就不应该使用该代码。当您可以直接获取退出状态时,无需将退出状态转换为字符串。 (2认同)