Pexpect если еще заявление - PullRequest
       66

Pexpect если еще заявление

2 голосов
/ 21 февраля 2012

Я пытаюсь создать скрипт, который очищает ciscoasa bad xlate.

Чтобы проверить плохой xlate, я запускаю sh xlate |через 500, и если он получит ответ, он должен отправить команду очистки.Если я этого не сделаю, ciscoasa не разрешит новые туннели vpn.

Мне нужна помощь с оператором if else.В остальном скрипт работает нормально.Вот мой код:

import pexpect
import re

password1="abc"
password2="abc"
router="127.0.0.20"
user="user"


#Extracting IP out of xlate command
class sendip(object):
    def ip(self,reply):
    divide=reply[15:32]
    extract_ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}', divide )
    for ip in extract_ip:
      send = 'clear local-host '+ip
      return send
clearVPN = sendip()

#ssh into ciscoasa userop5@ip
child = pexpect.spawn ('ssh ' + user + '@' + router)
child.expect ('.*assword:.*')
child.sendline (password1)

#enable mode
child.expect ('.*>.*')
child.sendline ('ena')
child.expect ('.*assword:.*')
child.sendline (password2)

# after enabling send test command
child.sendline ('terminal pager 0')
child.sendline ('show run | include http')
child.expect ('enroll*')
print child.before

# Here it sends command
child.sendline('sh xlate | i 500')
child.expect ('ciscoasa#.*')
print child.after

if child==1:  # If receive reply then extract IP and send clear memory
    child.expect('UDP.*')
    message = child.before
    child.sendline(clearVPN.ip(message)) #extract ip from there reply and send clear
    print child.before
    child.expect('clearing.*')
    print child.before
else:         # Otherwise memory is not full
    child.expect ('ciscoasa#.*')
    print 'Memory is empty'
    print child.after

child.sendline('exit')
child.close() # close ssh

1 Ответ

1 голос
/ 22 февраля 2012

Я бы сказал, что вам нужно использовать несколько шаблонов при вызове child.expect перед оператором if. Таким образом, вы сможете принять решение на основе ответа на последнюю команду, отправленную на терминал.

Для получения дополнительной информации просмотрите списки , если шаблоны в документации.

...