gpt4 book ai didi

python-3.6 - 使用 kinit.stdin.write 'str' % 密码时出现 TypeError : a bytes-like object is required, 而不是 ('%s\n')

转载 作者:行者123 更新时间:2023-12-02 03:22:02 41 4
gpt4 key购买 nike

我正在尝试使用 python 从 Linux 计算机连接到 SQL 服务器。然而,在尝试获取 kerbos 票时遇到问题。下面是我正在使用的代码。

# Login Credentials
userid = "username"
password = "password"
realm="realm.com"
kinit = '/usr/bin/kinit'

# Get Fresh Kerberos Ticket
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()

Error message displayed :
Traceback (most recent call last):
File "poc_test1.py", line 25, in <module>
kinit.stdin.write('%s\n' % password)
TypeError: a bytes-like object is required, not 'str'

提前致谢。

最佳答案

您需要将 write 字符串编码为字节,以便 python 知道如何通过管道发送正确的字节。

将行更改为如下所示:

kinit.stdin.write('{}\n'.format(password).encode('utf-8'))

"".format() 是旧格式字符串语法的新版本。然后将其编码为字节,假设密码字符串采用 UTF-8 编码,这应该是默认值。

但我还建议用较新的通信替换 stdin.writewait ,它应该如下所示:

kinit = Popen(kinit_args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
kinit.communicate(input="{}\n".format(password).encode("utf-8"))

关于python-3.6 - 使用 kinit.stdin.write 'str' % 密码时出现 TypeError : a bytes-like object is required, 而不是 ('%s\n'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54479233/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com