使用Python子进程的kinit

时间:2011-08-24 19:38:53

标签: python ssh subprocess

我正在尝试通过subprocess + ssh连接到远程服务器以列​​出目录中的文件并在该目录中打印文件的内容。要做到这一点,我需要运行kinit作为Python子进程。任何想法如何做到这一点?假设用户使用他们的kerberos id和密码登录..

谢谢。

1 个答案:

答案 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