我正在尝试通过subprocess + ssh连接到远程服务器,以列出目录中的文件并在该目录中打印文件的内容。为此,我需要将kinit作为Python子进程运行。有关如何执行此操作的任何想法?假设用户使用其kerberos ID和密码登录。

谢谢。

最佳答案

如果要运行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

10-07 23:50