【发布时间】:2020-09-27 12:16:53
【问题描述】:
基本上,我正在尝试使用 Python 运行多处理,这将利用 telnet 到服务器以发送 HTTP 请求。该请求记录在 request.txt 完整请求中,带有标头。
在我的 python 代码中,我测试了完整的多处理,它就像魔术一样工作。但是,一旦放置在服务器中,bash 命令就无法正确执行。
我试图在 Python 中复制的是以下 bash 示例:
START=
(
cat request.txt
sleep 2
)| telnet 0 999
我在 python 源代码中所做的是:
os.system("START=\
(\
cat request.txt \
sleep 2 \
)| telnet 0 999\
")
我得到的是:
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Connection closed by foreign host.
当我通过 bash 终端手动运行请求时,它运行完美,没有错误。但是,当尝试执行 python 应用程序时,它会给出上述行为。
P/S 我没有发布完整源代码的原因是因为我的问题仅与 os.system 相关——应用程序的 bash 部分。
谢谢
【问题讨论】:
-
...为什么你要使用 telnet 发送这个而不是使用 socket 模块?
-
已经有非常好的生成 HTTP 请求的库了:你为什么不使用它们?
-
@AKX Python 本来就是一个很好的胶水语言,通过 Python 运行 shell 脚本肯定没问题。
-
@alec_djinn,你错了。作为一个热爱 Python 的人,我这么说。以与使用 bash 相同的方式使用它是一种可怕的语言。是的,这样做是“可以的”,但当然不建议这样做。请参阅前两个 cmet,如果可以的话,我会多次投票。
-
@AKX,我正在连接的服务器使用的是 HTTP xml rpc 协议,我会尝试连接它,如果你有任何有价值的资源,请分享。谢谢