首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在尝试向设备派生时观察TypeError

在尝试向设备派生时观察TypeError
EN

Stack Overflow用户
提问于 2018-05-10 07:18:50
回答 1查看 58关注 0票数 1

我有一台Centos 7笔记本电脑通过LAN端口连接到我的设备。正在尝试登录到我的设备并执行一些命令来执行自动化任务。我在CentOS7上安装了Python3.6.4。下面是我在笔记本电脑上的.py脚本。

代码语言:javascript
复制
#!/usr/local/lib python3.6
import pexpect
import sys
import re

def dologin(child):
    # Enter User Name
    child.expect ('login:')
    child.sendline ('admin')

    # Enter Password
    child.expect ('Password:')
    child.sendline ('123')
    return

def doprepcommands(child):
    # Enter config prompt
    child.expect ('NOS/27179080475072>')
    child.sendline ('config')

    # Issue command
    child.expect ('NOS/27179080475072/DEBUG/Config>')
    child.sendline ('show vlan')
    child.expect ('NOS/27179080475072/DEBUG/Config>')
    child.sendline ('exit')
    child.expect ('NOS/27179080475072/DEBUG>')
    child.sendline ('exit')
    child.expect ('NOS/27179080475072')
    child.sendline ('exit')
    return

# Spawn the telnet session
child = pexpect.spawn ('telnet 192.168.1.254')

 # Display progress on screen
child.logfile = sys.stdout
dologin(child)
doprepcommands(child)

我在我的空闲屏幕上观察到下面提到的错误当我通过在不同的博客中找到的细节运行script.Going时,我部分地理解了在我的脚本中错误地使用了'sys.stdout‘(需要在Python2.7和Python3.6中使用不同的用法)。我也在尝试找出我调用的函数'dologin(child)','doprepcommands(child)‘是否使用了正确的Python3语法。

我是Python的新手。有没有人能帮我纠正这个错误?

代码语言:javascript
复制
================= RESTART: /home/aricent/Siva/test_debug.py        =================
Traceback (most recent call last):
 File "/home/Siva/test_debug.py", line 37, in <module>
 dologin(child)
 File "/home/Siva/test_debug.py", line 8, in dologin
   child.expect ('login:')
 File "/usr/local/lib/python3.6/site-packages/pexpect/spawnbase.py",           line 341, in expect
 timeout, searchwindowsize, async_)
 File "/usr/local/lib/python3.6/site-packages/pexpect/spawnbase.py",     line 369, in expect_list
 return exp.expect_loop(timeout)
 File "/usr/local/lib/python3.6/site-packages/pexpect/expect.py",    line 111, in expect_loop
 incoming = spawn.read_nonblocking(spawn.maxread, timeout)
 File "/usr/local/lib/python3.6/site-packages/pexpect/pty_spawn.py", line 485, in read_nonblocking
 return super(spawn, self).read_nonblocking(size)
 File "/usr/local/lib/python3.6/site-packages/pexpect/spawnbase.py", line 179, in read_nonblocking
 self._log(s, 'read')
 File "/usr/local/lib/python3.6/site-packages/pexpect/spawnbase.py", line 126, in _log
 self.logfile.write(s)
 TypeError: must be str, not bytes 
EN

回答 1

Stack Overflow用户

发布于 2018-06-05 08:38:06

我在不同的博客上通过一些可用的讨论解决了这个问题。我已经用'spawnu‘替换了’spawnu‘,现在我可以远程登录到我的设备,并根据需要执行操作。child.logfile = pexpect.spawn ('telnet 192.168.1.254') child.logfile= sys.stdout

代码语言:javascript
复制
child = pexpect.spawnu ('telnet 192.168.1.254', logfile=sys.stdout, timeout = None)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50263360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档