使用Python子进程进行kinit
我想通过子进程和ssh连接到一个远程服务器,目的是列出一个目录里的文件,并打印出那个目录中某个文件的内容。为此,我需要在Python中运行kinit这个命令。你们有没有什么建议?假设用户已经用他们的kerberos账号和密码登录了。
谢谢。
1 个回答
8
如果你想运行 kinit
来让用户获取一个 Kerberos 票据,你可以直接询问他们的密码(比如使用 getpass
模块),然后把这个输入传递给子进程。
这个过程大致是这样的:
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