让python在运行csh脚本时输入密码

dar*_*ckc 5 python passwords scripting csh root

我正在编写一个在Solaris 10中执行csh脚本的python脚本.csh脚本会提示用户输入root密码(我知道),但我不知道如何让python脚本用密码回答提示.这可能吗?这是我用来执行csh脚本的内容:

import commands

commands.getoutput('server stop')
Run Code Online (Sandbox Code Playgroud)

Fed*_*oni 7

看看pexpect模块.它旨在处理交互式程序,这似乎是你的情况.

哦,请记住,shell或python脚本中的硬编码root密码可能是一个安全漏洞:D


Dou*_*yle 5

使用子流程。调用 Popen() 来创建您的进程并使用communication() 向其发送文本。对不起,忘了包括管道..

from subprocess import Popen, PIPE

proc = Popen(['server', 'stop'], stdin=PIPE)

proc.communicate('password')
Run Code Online (Sandbox Code Playgroud)

您最好避免使用密码并尝试使用 sudo 和 sudoers 之类的方案。在别处提到的 Pexpect 不是标准库的一部分。

  • 使用您在此处推荐的 PIPE 时,我得到了相同的响应。脚本以 Password: 提示停止。 (2认同)