Функция скрипта для проверки того, что IP находится в белом списке - PullRequest
2 голосов
/ 10 мая 2011

У меня есть скрипт 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 Ответ

0 голосов
/ 10 мая 2011

Если вы планируете редактировать этот белый список вручную, вы можете просто использовать файл со своим списком 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.

...