让Python在运行csh脚本时输入密码
我正在写一个Python脚本,用来在Solaris 10系统中执行一个csh脚本。这个csh脚本会要求用户输入根密码(我知道这个密码),但我不太确定怎么让Python脚本自动输入这个密码来回答提示。这样做可能吗?下面是我用来执行csh脚本的代码:
import commands
commands.getoutput('server stop')
7 个回答
2
import pexpect
child = pexpect.spawn('server stop')
child.expect_exact('Password:')
child.sendline('password')
print "Stopping the servers..."
index = child.expect_exact(['Server processes successfully stopped.', 'Server is not running...'], 60)
child.expect(pexpect.EOF)
这个方法有效!Pexpect真是太棒了!
5
可以使用 subprocess 模块。通过调用 Popen() 来创建你的进程,然后用 communicate() 方法发送文本。抱歉,我忘了提到 PIPE 了……
from subprocess import Popen, PIPE
proc = Popen(['server', 'stop'], stdin=PIPE)
proc.communicate('password')
最好还是避免直接使用密码,可以尝试使用像 sudo 和 sudoers 这样的方案。之前提到的 Pexpect 不是标准库的一部分。
9
看看这个pexpect模块吧。它是专门用来处理需要互动的程序的,这听起来正好适合你的情况。
哦,对了,记得在脚本里直接写入root用户的密码是有安全隐患的哦 :D