我正在尝试通过subprocess + ssh连接到远程服务器以列出目录中的文件并在该目录中打印文件的内容。要做到这一点,我需要运行kinit作为Python子进程。任何想法如何做到这一点?假设用户使用他们的kerberos id和密码登录..
谢谢。
答案 0 :(得分:2)
如果要运行kinit
以使用户获得Kerberos票证,您只需提示输入密码(例如使用getpass
模块),然后将该输入传递给子流程。 / p>
这看起来像这样:
from subprocess import Popen, PIPE
kinit = '/usr/bin/kinit'
kinit_args = [ kinit, '%s@%s' % (userid, realm) ]
kinit = Popen(kinit_args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
kinit.stdin.write('%s\n' % password)
kinit.wait()
这会以通常的方式建立一个票据,应该以通常的方式查找Kerberos票证(在片段来自的代码中,它是对LDAP连接进行身份验证):https://github.com/jeremyroman/pyceo/blob/master/ceo/ldapi.py