0

假设这段代码是一个简单的 Python 代码,它可以获取用户名和密码:

from getpass import getpass

user = getpass(" enter username :")
pass = getpass(" enter password ")
print("user = ", user)
print("pass = ", pass)

此外,假设我们有一个名为 input 的文件,其中包含:

我的用户名

我的密码

我想将此文件作为 bash 中 python 代码的输入发送:

但这条指令不起作用:

python3 get_user_pass.py < input

这是因为使用了 getpass 函数,如果我们使用 input 而不是 getpass,它将正常工作。我们如何将输入文件从 bash 发送到使用 getpass 的 python 代码?

4

2 回答 2

0

我们在执行脚本时将文件名作为参数传递。该脚本将打开传递的文件名并逐行读取内容并将内容作为列表引用。

用户和密码文件:

bash-3.2$ cat /Users/anku/Documents/project/config.txt
user_xyz
user_xyz_pass
bash-3.2$ 

Python脚本:

#!/usr/bin/python
import sys

file_name = str(sys.argv[1])
print (file_name)

file = open(file_name, 'r')
content = file.read()
paths = content.split("\n")
user = str(paths[0])
password = str(paths[1])
print("user = ", user)
print("pass = ", password)

执行 Python 脚本:

bash-3.2$ python /Users/anku/Documents/project/usr_pass.py /Users/anku/Documents/project/config.txt
/Users/anku/Documents/project/config.txt
user =  user_xyz
pass =  user_xyz_pass
bash-3.2$ 

希望这可以帮助。祝你好运 !!

于 2019-12-01T09:58:56.737 回答
0

getpass()读取形式 /dev/tty 并且根据定义需要交互式外壳。它不会从标准输入(或任何文件)读取输入。

getpass函数用于隐藏输入回声。将文件流重定向到输入无论如何都不会显示回显。

于 2019-12-01T09:30:00.840 回答