Python os.system() 向脚本输入文本

5 投票
1 回答
17782 浏览
提问于 2025-04-18 04:37

我有一个需要自动化的脚本,它是一个 .sh 脚本,我想在一个 Python 脚本里面运行它,类似这样:

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

这个 script.sh 脚本需要用户输入三个内容,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 脚本自动输入这三个需要的值到 script.sh 中呢?

1 个回答

10

你可以用 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')

撰写回答