gpt4 book ai didi

python - 使用Python子进程执行shell命令

转载 作者:行者123 更新时间:2023-11-30 22:08:15 32 4
gpt4 key购买 nike

我想通过 python 脚本执行以下命令:

sudo cat </dev/tcp/time.nist.gov/13

我可以通过命令行完全执行这个命令。但是,当我使用子进程执行它时,出现错误:

Command ['sudo','cat','</dev/tcp/time.nist.gov/13'] returned non-zero exit status 1

我的代码如下

import subprocess
subprocess.check_output(['sudo','cat','</dev/tcp/time.nist.gov/13'])

正如我上面提到的,通过命令行执行命令会给出所需的输出,没有任何错误。我正在使用 Raspbian Jessie 操作系统。有人能指出我正确的方向吗?

最佳答案

您根本不想为此使用subprocess

这个命令的真正作用是什么?它使用 bash 扩展打开网络套接字,通过 cat(1) 将其重新路由到标准输出,并决定以 root 身份运行 cat。在 Python 中,您实际上并不需要 bash 扩展、或 /bin/cat 或 root 权限来执行这些操作;您正在寻找 socket图书馆。

这是一个全 Python 等效项:

#!/usr/bin/env python3
import socket
s = socket.create_connection(('time.nist.gov', 13))
try:
print(s.recv(4096))
finally:
s.close()

(请注意,我的所有实验都表明此连接有效,但白天服务器会立即关闭来响应。例如,更简单的 shell 调用 nc time.nist.gov 13 也会返回空字符串。 )

关于python - 使用Python子进程执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231021/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com