在linux上,这将成功更改用户密码。
subprocess.Popen('passwd', shell=True, stdin=subprocess.PIPE, stdout=None)
subprocess.communicate(input='abc\nabc')
但在solaris上,我发现在我调用之后:
subprocess.Popen('iscsiadm modify -C iqn.xxx-xx.xxx', shell=True, stdin=subprocess.PIPE, stdout=None)
它仍会显示“Enter Secret”提示并要求输入密码。除了输入密码,我什么也做不了。当前的shell仍然属于iscsiadm进程。
我需要包装这个iscsiadm提示输入密码并安静地运行它。但现在这里似乎有些不对劲。
编辑: 为什么有一些程序实现只接受来自终端的输入。如上例所示,linux passwd和solaris iscsiadm之间有什么区别。