Advertisement
Etoneja

Python - Expect autologin

May 8th, 2018
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.51 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. ''' автологин на cisco, d'link, huawei
  5.    с детектированием вендора
  6. '''
  7.  
  8. # импортируем необходимые модули
  9. import pexpect
  10. from sys import argv
  11.  
  12. # принимаем ip адрес аргументом командной строки
  13. p=pexpect.spawn('telnet %s' % argv[1])
  14.  
  15. # данные tacacs+
  16. login='mylogin'
  17. password='mypassword'
  18.  
  19.  
  20. ''' первая итерация - детектируем вендора оборудования.
  21.    длинк очень любит хвалиться, поэтому его
  22.    детектируем по наличию текста 'D-Link' в приглашении.
  23.    Остальные отличаются по приглашению ввода логина.
  24. '''
  25.  
  26. i = p.expect(['.D-Link.','login:','Username:'])
  27. if i == 0:
  28.     print 'D-Link detected'
  29.     p.expect(['login:','UserName:'])
  30.     p.sendline(login)
  31.     p.expect(['Password:','PassWord'])
  32.     p.sendline(password)
  33.     i = p.expect(['.4#', '.3#','.Fail.'])
  34.     if i == 2:
  35.  
  36.     ''' Как было сказано - НЕ везде работает tacacs, поэтому
  37.        если '.Fail.' - логинимся со стандартным именем и паролем.
  38.    '''
  39.         print 'Wrong credentials! Trying default'
  40.         p.expect(['login:','UserName:'])    
  41.         p.sendline('default')
  42.         p.expect(['Password:','PassWord'])
  43.         p.sendline('default')
  44.  
  45. ''' Если зашли удачно - то получаем админа. #3 - обычный пользователь,
  46.    #4 - админ
  47. '''
  48.     elif i == 1:
  49.         print 'enabling admin'
  50.         p.sendline("enable admin")
  51.         p.expect('Password:')
  52.         p.sendline('admin_pass')
  53.     else:
  54.         pass
  55.     p.interact()
  56. elif i == 1:
  57. ''' для cisco все проще - получаем enable режим автоматом,
  58.    так что делать ничего не приходится
  59. '''
  60.     print 'Cisco detected'
  61.     p.sendline(login)
  62.     p.expect('Password:')
  63.     p.sendline(password)
  64.     p.interact()
  65. elif i == 2:
  66. ''' Для huawei вводим логин и пароль,
  67.    и переходим в режим привилегированного пользователя sys
  68. '''
  69.     print 'Huawei detected'
  70.     p.sendline(login)
  71.     p.expect('Password:')
  72.     p.sendline(password)
  73.     p.expect('.')
  74.     print 'enabling sys'
  75.     p.sendline('sys')
  76.     p.interact()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement