gpt4 book ai didi

Python 打印重定向作为 stdin 命令行参数

转载 作者:行者123 更新时间:2023-11-30 22:52:31 25 4
gpt4 key购买 nike

我有一个二进制 foo,它需要两个命令行参数:用户名和密码。

我编写了 script.py 来生成用户名和密码。目前,我使用 print 将它们打印到 stdout,然后当我在 shell 中调用 foo 时手动将它们复制并粘贴到 shell 中,即,

$python script.py
username password
(i copied and paste the output below)
$./foo username password

但是,我需要生成在标准输出中不可打印的特殊字节,因此如果我从标准输出复制并粘贴,这些特殊字节值就会消失。如何将 python 输出重定向为 foo 的参数?

顺便说一句:我尝试过在 python 中使用 call in subprocess 直接调用 foo,这并不理想,因为如果我在 foo 中触发段错误,它不会反射(reflect)在 bash 中。

最佳答案

运行:

./foo $(python script.py)

为了演示它的工作原理并为 foo 提供两个参数,让我们使用这个 script.py:

$ cat script.py
#!/usr/bin/python
print("name1 pass1")

让我们使用这个 foo 以便我们可以看到向它提供了哪些参数:

$ cat foo
#!/bin/sh
echo "1=$1 2=$2"

执行结果如下:

$ ./foo $(python script.py)
1=name1 2=pass1

如您所见,foo 接收名称作为其第一个参数,接收密码作为其第二个参数。

安全说明: OP 已声明这与他的应用程序无关,但对于可能在考虑其他应用程序的情况下阅读此内容的其他人来说,请注意在命令行上传递密码是不安全:系统上的所有用户都可以轻松使用完整的命令行。

关于Python 打印重定向作为 stdin 命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38547049/

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