Pexpect если еще заявление
Я пытаюсь создать скрипт, который очищает 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 ответ
Я бы сказал, что вам нужно использовать несколько шаблонов в вызове child.expect
перед if
заявление. Таким образом, вы сможете принять решение на основе вывода ответа на последнюю команду, отправленную на терминал.
Для получения дополнительной информации, пожалуйста, посмотрите на списки, если шаблоны в документации.