在 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)
它仍然会显示“输入密码”提示并要求输入密码。除了输入密码,我什么也做不了。当前的 shell 仍然属于那个 iscsiadm 进程。
我需要包装这个提示输入密码的 iscsiadm 并安静地运行它。但现在这里似乎有些不对劲。
编辑:为什么有些程序只接受来自终端的输入。如上例,linux passwd和solaris iscsiadm有什么区别。