#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. Я сделаю это сообщением вики сообщества, чтобы любой, у кого есть информация, мог ее отредактировать.