Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2018 13:39:16

valloru
Зарегистрирован: 2018-02-26
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключене к cisco(скрыть пароль)

Есть довольно важная задача - подключение к оборудованию cisco во время выполнения программы python. Все в принципе проходит нормально, но беда в том что в самом скрипте приходится в явном виде указывать логин/пароль, например:
f=open(“File.txt”)
lines=list(f)
for l in lines:
acc = Account('login', ‘password’)
con = SSH2()
print(l.strip())
con.connect(l.strip())
con.login(acc)
con.execute('terminal length 0')
con.execute('sh run')
con.send('exit')

Суть скрипта в том что мы коннектимся к оборудованию из списка File.txt и выводм sh run. Можно каким-либо образом скрыть login/password?
read_login() идея отличная, но во время выполнения просто все зависает
getpass та же проблема
get_accounts_from_file не очень понятно как его применять.

Может кто что подсказать?

Офлайн

#2 Фев. 26, 2018 13:52:00

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Подключене к cisco(скрыть пароль)

valloru
read_login() идея отличная, но во время выполнения просто все зависает
потому что это и подобное ожидают ввода пароля от пользователя. Это не ваш случай.
Если можете правами доступа к файлу ограничить доступ для посторонних лиц, то как вариант делайте так. Пароль всегда будет в каком либо виде доступен, ведь его надо прочитать и явно передать.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Фев. 26, 2018 13:58:19

valloru
Зарегистрирован: 2018-02-26
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключене к cisco(скрыть пароль)

JOHN_16, я понимаю что read_login() по идее должен предлагать мне ввести логин пароль, но этого пчему-то не происходит, точнее логин ввести могу, дальше программа ничего не предлагает, ну и бог с ним. В принципе get_accounts_from_file была бы прекрасным вариантом. Но видимо моих знаний и понимания документации не достаточно что бы корректно этим вариантом воспользоваться. Если делаю
acc = get_accounts_from_file(“accounts.cfg”), получаю ошибку:
line 17, in <module>
con.login(acc)

Можте подсказать в чем проблема?

Офлайн

#4 Фев. 26, 2018 14:44:38

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Подключене к cisco(скрыть пароль)

 from os import getlogin
import sys
import keyring
import getpass
my_server = '192.168.0.1'
def windows_credential():
    # look there: cmd -> control userpasswords2 -> Advanced -> Manage passwd -> Windows Credential
    passwd = getpass.getpass(prompt='Please input password for account: ')
    keyring.set_password(my_server, getlogin(), passwd)
    print('The Windows credential was sucessfully created for host: {} and user: {}'.format(my_server, getlogin()))
def get_passwd():
    passwd = keyring.get_password(my_server, getlogin())
    if passwd is None:
        print('Please create windows credential for host')
        sys.exit(1)
    return passwd
windows_credential()
print(get_passwd())
как вариант ? для передачи используйте ssh_v2 транспорт шифруется.

Отредактировано papuas (Фев. 26, 2018 15:08:33)

Офлайн

#5 Фев. 26, 2018 14:59:28

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Подключене к cisco(скрыть пароль)


картинка из гугла просто для примера
keyring также работает с linux credentials
скрипты это конечно хорошо, но мне кажется вам скорее всего нужно это

Отредактировано papuas (Фев. 26, 2018 16:02:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version