Проблема с 'not defined'

Статус
Закрыто для дальнейших ответов.

Irkin

Новичок
Пользователь
Ноя 24, 2020
3
0
1
Здравствуйте
Только столкнулась с написанием чего-то на python.
Простите заранее за глупые вопросы.
Что есть: Сentos7, python3.6
Суть: передать скрипту несколько параметров(ip, ban or unban)
Если передаю только ip - все работает, но стоит мне добавить if для понимания ban/unban - ничего не работает, и постоянные проблемы с табуляцией..
Подозреваю, что не там или не так пихаю if
Заранее спасибо

Код:
#!/usr/bin/env python
import sys

import logging
import ipaddress

from ncclient import manager

ip = sys.argv[1]
act = sys.argv[2]

def connect(host, port, user, password):
    conn = manager.connect(host=host,
    port=port,
    username=user,
    password=password,
    timeout=60,
    device_params={'name': 'junos'},
    hostkey_verify=False)

    conn.lock()
    
if act == 'ban':
    load_config_result = conn.load_configuration(action='set', config='set policy-options prefix-list blackholeprefixes_ipv4 {}'.format(ip))
    load_config_result = conn.load_configuration(action='set', config='set routing-options static route {} discard'.format(ip))
    logging.info(load_config_result)

    validate_result = conn.validate()
    logging.info(validate_result)
    compare_config_result = conn.compare_configuration()
    logging.info(compare_config_result)

    conn.commit()
    conn.unlock()
    conn.close_session()

if __name__ == '__main__':
    LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
    logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)
    connect('40.40.40.1', '2503', 'fast', 'ckflrbqcf[fh')
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 569
456
83
я так понял у вас проблема что переменная conn не определена, вам нужно ее возвращать из функции, либо определить ее вне функции, либо блок if поместить в функцию connect (сделав соответствующий отступ всего блока)...
еще можете почитать про область видимости в питоне...
 
Последнее редактирование:

Irkin

Новичок
Пользователь
Ноя 24, 2020
3
0
1
Спасибо, буду разбираться дальше.
 

Irkin

Новичок
Пользователь
Ноя 24, 2020
3
0
1
я так понял у вас проблема что переменная conn не определена, вам нужно ее возвращать из функции, либо определить ее вне функции, либо блок if поместить в функцию connect (сделав соответствующий отступ всего блока)...
еще можете почитать про область видимости в питоне...
Спасибо. Я знаю, что нужно много всего узнать перед написанием, но есть моменты, когда нужно все и сразу(
Сама затупила с логикой, if поставила перед функцией..так как после нее мы идем уже на маршрутизатор и делаем дела
 
Статус
Закрыто для дальнейших ответов.

Форум IT Специалистов