Функция скрипта для проверки, внесен ли IP в белый список

#python #sql #function #whitelist

#python #sql #функция #белый список

Вопрос:

У меня есть скрипт на Python, который блокирует некоторые IP-адреса, если они выполняют некоторые действия. Этот скрипт содержит функцию для проверки, заблокирован ли уже IP. В дополнение к этому, я бы хотел, чтобы функция также проверяла, сохранен ли IP в таблице базы данных, и если это так, не блокируйте его (белый список)

Функция выглядит следующим образом :

 def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep "   ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    else:
    return False
  

Я не настолько разбираюсь в Python, поэтому не уверен, как поступить с этим, но я полагаю, что это довольно просто. Я благодарен за любые предложения, которые у вас могут возникнуть. Спасибо!

Последующее редактирование: я хочу использовать базу данных MySQL, поскольку я буду писать PHP-интерфейс для ручного добавления IP-адресов. Как бы я это искал? В таблице есть только 2 поля: id и whitelist_ip, в последнем хранится IP, который должен быть внесен в белый список.

Комментарии:

1. Я также забыл добавить, что имя таблицы на самом деле является белым списком и содержит только 2 строки: id и whitelist_ip, который содержит фактический IP-адрес.

2. Можете ли вы подробнее о /sbin/iptables -L INPUT -n|grep ? Спасибо

Ответ №1:

Если вы планируете редактировать этот белый список вручную, вы могли бы просто использовать файл со своим списком IP-адресов. (по одному на строку) Затем вы могли бы использовать код, подобный этому, чтобы проверить это:

 def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep "   ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    whitelist = open('<filename>')
    for ip in whitelist.readlines():
        if ip_address == ip:
            return True
    return False
  

Сначала будет произведена проверка с использованием выполненной вами проверки, и если это не удастся, будет проверен белый список ip. Поскольку функция возвращает из if-предложения, предложение else не требуется.

Если вы хотите использовать базу данных sql для хранения данных из белого списка, я бы рекомендовал использовать mysql или sqlite. У обоих из них доступны оболочки python.

Комментарии:

1. Спасибо, но я хочу использовать базу данных MySQL, поскольку я буду писать PHP-интерфейс для ручного добавления IP-адресов. Как бы я это искал? В таблице есть только 2 поля: id и whitelist_ip, в последнем хранится IP, который должен быть внесен в белый список.

2. вы захотите взглянуть на пакет python под названием MySQLdb. Вы можете найти это здесь: sourceforge.net/projects/mysql-python/forums/forum/70461/topic /…

3. Но как мне реализовать это в кодировании? Это то, что меня интересует.

4. Я мало что знаю о mysqldb. Я сделаю это сообщением вики сообщества, чтобы любой, у кого есть информация, мог ее отредактировать.