2015-01-13 2 views
0

У меня есть сценарий, который использует pexpect для telnet для коммутатора и копирует его исполняемый конфиг на tftp-сервер. Если я даю имя хоста, то скрипт работает нормально, но при использовании регулярного выражения в pexect происходит тайм-аут. Код выглядит следующим образом:pexpect regex не работает

child = pexpect.spawn('telnet ' +ip) 
child.expect ('Login: ') 
child.sendline (username) 
child.expect ('Password: ') 
child.sendline (password) 
child.sendline ('enable') 
child.expect('Password: ') 
child.sendline(password) 
child.expect('.*\-.*#') 
child.sendline ('copy running-config tftp://10.0.37.111/'+filename+'.txt') 
time.sleep(5) 

Я даю указанное выше выражение, поскольку имя хоста для моего текущего переключателя - Force10-60. Благодарю.

+0

@AvinashRaj - Что делать, если переключатель имя хоста не известно? – deep

ответ

1
child.expect(r'.+\-.+#') 

Вы можете попробовать это, предоставив raw string.

Или используйте

child.expect('#') 

Чтобы соответствовать любому хосту

+0

Спасибо. Это работает! Но можете ли вы помочь, если есть способ получить имя хоста коммутатора, чтобы получить вышеуказанное имя файла из самого коммутатора. Благодарю. – deep

+1

@dept после ожидания сделайте 'print child.before'. У вас будет имя хоста – vks