You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在执行Python脚本时为getpass传递输入实现自动化?

解决方法

你提到的echo 'test' | python3 inputpass.py方式行不通,因为getpass.getpass()函数默认会绕过标准输入(stdin),直接从终端设备(tty)读取输入,目的是避免密码通过管道/重定向被泄露。

下面是几种可行的自动化输入方法:

  • 使用expect工具(需先通过包管理器安装,比如apt install expect或brew install expect):
    新建一个auto_input.exp脚本,内容如下:

    #!/usr/bin/expect
    spawn python3 inputpass.py
    # 匹配getpass默认的提示符(通常是"Password: ")
    expect "Password:"
    send "test\r"
    # 等待脚本执行完成
    expect eof
    

    给脚本添加执行权限:chmod +x auto_input.exp,然后运行./auto_input.exp即可。

  • 使用Python的pexpect库(需先安装:pip install pexpect):
    新建一个run_script.py脚本,内容如下:

    import pexpect
    # 启动目标脚本
    proc = pexpect.spawn("python3 inputpass.py")
    # 匹配密码提示符
    proc.expect("Password:")
    # 发送密码并换行
    proc.sendline("test")
    # 输出脚本的执行结果
    proc.interact()
    

    运行python3 run_script.py就能自动完成输入。

  • 使用script命令模拟终端环境:
    直接在终端执行以下命令,无需额外脚本:

    script -q -c "python3 inputpass.py" /dev/null << EOF
    test
    EOF
    

    script命令会创建一个伪终端,让getpass能正常读取到输入内容。

内容的提问来源于stack exchange,提问作者Ghostman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:03:16