0

我正在尝试将以下 ssh 命令转换为 python 代码,我能够转换为 python 但 python 代码没有给出任何输出,所以我认为我没有正确转换它,尤其是布尔“AND”逻辑..任何人都可以指出这里有什么问题?

ssh -p 29418 company.com gerrit query --current-patch-set --commit-message --files 'status:open project:platform/code branch:master label:Developer-Verified=1 AND label:Code-Review>=1'

Python代码:-

with open(timedir + "/ids.txt", "wb") as file:
    check_call("ssh -p 29418 company.com "
        "gerrit query --commit-message --files --current-patch-set "
        "status:open project:platform/code branch:master label:Developer-Verified=1 AND label:Code-Review>=1 |"
        "grep refs |"
        "cut -f4 -d'/'",
            shell=True,   # need shell due to the pipes
            stdout=file)  # redirect to a file
4

2 回答 2

1

>=1可能被解释为重定向到=1文件,这就是 ids.txt 文件中没有输出的原因。

您在 check_call() 中使用的字符串没有引用 gerrit 的参数。将其与引用参数的第一个命令进行比较。

您可以使用pipes.quote()将字符串转义为 shell 的单个命令行参数。

于 2013-01-20T07:43:48.760 回答
1

使用Paramiko通过 ssh 连接

import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='xxx', 
    password='xxx')

然后就可以使用subprocesspython模块来执行系统调用了。

在 Python 中调用外部命令

于 2013-01-20T07:45:01.033 回答