У меня есть несколько соседей по комнате, которые разделили мой счет за интернет со мной каждый месяц. Иногда они забывают заплатить мне, и я вынужден приставать к ним за деньги.
Если после 3 дней приставания они все еще не заплатили, я создаю правило брандмауэра в моем Unix-маршрутизаторе, которое блокирует трафик на их mac-адрес. Это оказывается очень эффективным при получении просроченных соседей по комнате, чтобы заработать деньги.
Как я могу автоматизировать добавление / удаление mac-адреса в правило брандмауэра 3-го числа каждого месяца? Я хотел бы простой способ разблокировать их до конца месяца, как только они заплатят.
В настоящее время я использую pfsense. Несмотря на то, что существует модуль портала для авторизации , он не поддерживает регулирование доступа на пользователя / в месяц.
Как я могу автоматизировать блокировку / разблокировку доступа в Интернет соседа по комнате?
источник
Ответы:
~/do_not_block_friends
существует и время его изменения не превышает месячного периода (stat -c %y filename
) - не запускайте скрипт.touch ~/do_not_block_friends
.Скрипт запустится и увидит, что он
do_not_block_friends
был изменен, поэтому он не будет запускать команду iptables.Если они вам не заплатили - скрипт их заблокирует.
Как только они заплатили, вы запускаете другой подготовленный скрипт, чтобы разблокировать их.
Это общий план без особых подробностей, но я не думаю, что будет сложно разобраться в остальном.
Редактировать :
Вот более простой способ написания такого скрипта:
Мы используем
find
команду со следующими параметрами:maxdepth 1
- не искать рекурсивныйtype f
- поиск файлаname
- Поиск по этому имениmtime -31
- Найти файл, который был изменен менее 31 дня назадwc -l
будет считать количество строк, сгенерированных командой. Это будет,0
если друзья не заплатили (ничего не найдено), и это будет,1
если друзья заплатили, а мы сделалиtouch
контрольный файл.Этот скрипт не рассчитывает количество дней в месяце и по умолчанию равен 31, я думаю, что это нормально, поскольку мы не строим коммерческую биллинговую систему, но я считаю, что даже это можно рассчитать в bash.
источник
Это может быть больше, чем вы ищете, но рассматривали ли вы возможность настройки беспроводных учетных данных с использованием аутентификации 802.1x против RADIUS в качестве бэкэнда?
RADIUS может быть настроен для проверки любого валидатора, который вы пожелаете (что вам, вероятно, придется написать и сохранить в базе данных или что-то в этом роде), чтобы увидеть, заплатили ли ваши сослуживцы за аренду. Когда они аутентифицируются и платят, RADIUS аутентифицирует их. В противном случае это не так. Положительным моментом является то, что вы не полагаетесь на фильтрацию по MAC-адресам. Таким образом, если у вас есть технические подковы, они не смогут легко обойти установленные вами элементы управления.
источник
Проверьте, предоставляет ли ваш банковский счет или другое решение для транзакций, которое вы можете использовать (PayPal?), Любой способ автоматического уведомления о платеже, например:
Если такой метод доступен, остается только написать простой скрипт, который бы отслеживал платежи. Вы можете просто анализировать электронные письма из банка, чтобы получить ежемесячные платежи от ваших друзей. Вам потребуется файл конфигурации, в котором хранится номер или идентификатор учетной записи каждого друга, сумма к оплате (также может быть глобальной константой) и MAC-адрес.
Затем скрипт будет корректировать записи брандмауэра в соответствии со статусом ежемесячного платежа.
После этого сообщите своим друзьям о доступных способах оплаты и - при настройке брандмауэра - не забудьте предоставить своим друзьям доступ к механизму оплаты, чтобы они могли по-прежнему платить, если пропустили 3-дневный льготный период :)
источник