【问题标题】:Python os.system() input text to scriptPython os.system() 输入文本到脚本
【发布时间】:2025-12-03 19:10:01
【问题描述】:

我有一个需要自动化的脚本,所以它是一个 .sh 脚本,我想在 python 脚本中运行它:像这样:

import os
os.system('./script.sh -p 1234')

脚本script.sh需要用户输入3个字段,1)sudo密码,2)字符串,3)字符串。

Enter password for user: xxxx  #typed by me
Enter Auth Username: xxxx      #typed by me
Enter Auth Password: xxx       #typed by me

如何让 python 脚本键入/插入/将这 3 个需要的值传递给 script.sh

【问题讨论】:

  • 修改shell脚本一开始接受三个参数会更容易
  • 是的,我也想过,但是脚本每天都在变化,并且正在从另一台服务器下载,而且我需要 sudo 密码。
  • 确实让事情复杂化了

标签: python bash os.system


【解决方案1】:

您可以使用subprocess.Popen 来启动脚本并使用communicate 方法来传递它的输入。像这样的:

import subprocess

p = subprocess.Popen(['./script.sh', '-p', '1234'], 
                     stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = p.communicate(input='password\nauth username\nauth password\n')

【讨论】:

  • 我试过这个,它似乎工作,但我不能说,因为我看不到脚本输出,如果我用 os.system() 运行进程,我可以在 python 上看到输出壳,总之得到这个?
  • 你看到上面写着stdout, stderr = p.communicate(...)的那一行了吗? stdout 包含脚本的输出。
  • subprocess 文档提供了有关一切工作原理的更多详细信息。
  • 你能解释一下为什么password\nauth吗?
  • \n 是换行符。每个\n 都在模拟你按回车键。