超级骗子 Python 新手在这里。明确学习网络自动化。我一直在尝试做的一件事是编写在 Python2 和 Python3 中都可以使用的代码,但我遇到了一个对大多数人来说可能很明显的问题。是的,这里的标题与我找到的这篇文章相同。但是据我所知,我已经完成了建议(通过 .format() 将变量粘贴到 write 语句中)
这是代码..
#!/usr/bin/env python
from __future__ import print_function, unicode_literals
import getpass
import telnetlib
#Ask for username/pass
host_ip = '192.168.122.200'
try:
#For Py2
username = raw_input('Enter your telnet username: ')
except NameError:
#For Py3
username = input('Enter your telnet username: ')
password = getpass.getpass()
tn = telnetlib.Telnet(host_ip)
tn.read_until('Username: ')
tn.write('{}\n'.format(username))
if password:
tn.read_until('Password: ')
tn.write('{}\n'.format(password))
tn.write('terminal length 0\n')
tn.write('show version\n')
tn.write('exit\n')
print(tn.read_all())
这是我在运行它时遇到的错误......
root@NetworkAutomation-1:~# python get_show_version.py
Enter your telnet username: chase
Password:
Traceback (most recent call last):
File "get_show_version.py", line 22, in <module>
tn.write('{}\n'.format(username))
File "/usr/lib/python2.7/telnetlib.py", line 280, in write
if IAC in buffer:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)