Я просто пытался создать скрипт, чтобы получить некоторые выходы из устройства в Unix-основе, здесь вы можете найти свой код:Python PEXPECT - АУТ
import pexpect
import time,sys, traceback, os
telconn = pexpect.spawn('telnet 192.168.1.1')
telconn.logfile = sys.stdout
telconn.expect("Enter Choice>")
telconn.send("tacl" + "\r")
telconn.expect("TACL 1>")
telconn.send("logon node.mgr" + "\r")
telconn.expect("Password:")
telconn.send("psw" + "\r")
telconn.expect('$SYSTEM NODEMGR 1>')
telconn.send("osh" + "\r")
На самом деле он работает прекрасно, пока он не получает баннер (я не, если это может быть проблемой) и рядом cli
подскажите, здесь вы можете посмотреть на выходе:
python try.py
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
Available Services:
TACL EXIT
taclr Choice> tacl
logon node.mgrnode.mgr
Password: psw
Last Logon: 03 NOV 2015, 15:18
Last Unsuccessful Attempt: 03 NOV 2015, 15:17 Total Failures: 24
********************************************************************************November 3, 2015 15:51:57
********************************************************************************
This is a private system operated for XXX XXXXX
Authorization from XXX XXXXX management is required
for access to this system
Use by unauthorized persons is prohibited
********************************************************************************
********************************************************************************(Invoking $SYSTEM.NODEMGR.TACLCSTM)
Loaded from $SYSTEM.CBCLOCL.TACLMACS:
FI FN V SV P F H DS CD LS CAT QUEUE FS PE SPE SP T SCPA SCPB SCPC SCPD
Current volume is $SYSTEM.NODEMGR
$SYSTEM NODEMGR 1> Traceback (most recent call last):
File "try.py", line 22, in <module>
telconn.expect('$SYSTEM NODEMGR 1>')
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1418, in expect
timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1433, in expect_list
timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1535, in expect_loop
raise TIMEOUT(str(err) + '\n' + str(self))
pexpect.TIMEOUT: Timeout exceeded.
<pexpect.spawn object at 0xb7259acc>
version: 3.1
command: /usr/bin/telnet
args: ['/usr/bin/telnet', '192.168.1.1']
searcher: <pexpect.searcher_re object at 0xb726f7ac>
buffer (last 100 chars): 'T QUEUE FS PE SPE SP T SCPA SCPB SCPC SCPD\r\n\r\nCurrent volume is $SYSTEM.NODEMGR\r\n$SYSTEM NODEMGR 1> '
before (last 100 chars): 'T QUEUE FS PE SPE SP T SCPA SCPB SCPC SCPD\r\n\r\nCurrent volume is $SYSTEM.NODEMGR\r\n$SYSTEM NODEMGR 1> '
after: <class 'pexpect.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 10135
child_fd: 3
closed: False
timeout: 30
delimiter: <class 'pexpect.EOF'>
logfile: <open file '<stdout>', mode 'w' at 0xb753e078>
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
Как вы можете видеть, последняя подсказка у меня есть:
$SYSTEM NODEMGR 1>
После того, что я получил: Traceback (most recent call last):
Любой человек может помочь мне в исправить этот вопрос? Я хотел бы просто продолжить поиск некоторого результата, но я застрял в этом месте!
Это сработало, спасибо вам большое, можете ли вы помочь мне также в сопоставлении подсказки через регулярное выражение? Я прочитал что-то о модуле «re» python, который нужно импортировать, но я не могу найти ничего другого относительно команд и т. Д. – Loris91
Я сосать в регулярном выражении, я стараюсь избегать его как можно больше. Когда я использую его, я всегда использую учебник, на который я указал для ссылки: https://docs.python.org/2/howto/regex.html# –
@ Loris91: в модерации регулярные выражения очень полезны. Если вы знаете регулярные выражения; вы можете ежедневно использовать их (grep, search/replace). Я рекомендую книгу «Освоение регулярных выражений». – jfs