使用Python子进程进行kinit

5 投票
1 回答
19606 浏览
提问于 2025-04-17 00:17

我想通过子进程和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

撰写回答