56 votes

Comment puis-je couper Internet pour mes colocataires qui n'ont pas payé la facture ce mois-ci ?

J'ai plusieurs colocataires qui partagent avec moi la facture internet chaque mois. De temps en temps, ils oublient de me payer, et je dois les harceler pour l'argent.

Si après 3 jours de harcèlement ils n'ont toujours pas payé, je crée une règle de pare-feu dans mon routeur basé sur Unix qui bloque le trafic vers leur adresse MAC. Cela s'avère très efficace pour inciter les colocataires défaillants à payer l'argent.

Comment pourrais-je automatiser l'ajout/suppression d'une adresse MAC à une règle de pare-feu le 3 de chaque mois ? J'aimerais une manière simple de les débloquer pour le reste du mois une fois qu'ils ont payé.

Je suis actuellement en train d'utiliser pfsense. Bien qu'il y ait un module portail captif, il ne prend pas en charge la régulation de l'accès par utilisateur/par mois.

Comment pourrais-je automatiser le blocage/déblocage de l'accès internet des colocataires ?

33voto

VL-80 Points 4415
  1. Créez un script bash qui ajoute une règle restrictive iptables.
  2. Placez ce script dans la cron mensuelle.
  3. À l'intérieur du script bash, créez une condition - si le fichier ~/do_not_block_friends existe et que son heure de modification est dans la période d'un mois (stat -c %y nom_fichier) - ne lancez pas le script.
  4. Une fois qu'ils vous ont payé, faites touch ~/do_not_block_friends.

Le script s'exécutera et verra que do_not_block_friends a été modifié, il ne lancera donc pas la commande iptables.

S'ils ne vous ont pas payé - le script les bloquera.

Une fois qu'ils vous ont payé, lancez un autre script préparé pour les débloquer.

C'est un plan général sans trop de détails, mais je ne pense pas que ce sera difficile de comprendre le reste.

Édition:

Voici une manière plus simple d'écrire un tel script:

#!/bin/bash

count=`find ~ -maxdepth 1 -type f -name do_not_block_friends -mtime -31 | wc -l`

if [ "$count" -eq 1 ]; then

# Les amis ont payé. Ne rien faire;

else

# Les amis n'ont pas payé. Exécutez la commande iptables;

fi

Nous utilisons la commande find avec les options suivantes:

  • maxdepth 1 - Ne pas rechercher récursivement
  • type f - Rechercher un fichier
  • name - Rechercher par nom
  • mtime -31 - Trouver un fichier modifié il y a moins de 31 jours

wc -l comptera le nombre de lignes générées par la commande. Il sera 0 si les amis n'ont pas payé (rien trouvé) et il sera 1 si les amis ont payé et que nous avons fait touch sur le fichier de contrôle.

Ce script ne calcule pas le nombre de jours dans le mois et se contente de 31, ce qui me semble être correct car nous ne construisons pas un système de facturation commercial, mais je crois que même cela peut être calculé en bash.

14voto

cloaked1 Points 301

Il se peut que ce soit plus que ce que vous recherchez, mais avez-vous envisagé de mettre en place des identifiants sans fil en utilisant l'authentification 802.1x contre un RADIUS en arrière-plan?

Le RADIUS peut être configuré pour vérifier le validateur de votre choix (quelque chose que vous devrez probablement scripter et stocker dans une base de données ou quelque chose du genre) pour voir si vos colocataires ont payé leur loyer. Lorsqu'ils s'authentifient et ont payé, le RADIUS les authentifie. Sinon, non. L'aspect positif de cela est que vous ne vous appuyez pas sur le filtrage des adresses MAC. De cette façon, si vous avez des colocataires compétents en technologie, ils ne pourront pas facilement contourner les contrôles que vous avez mis en place.

1voto

Jens Granlund Points 2923

Vérifiez si votre compte bancaire ou une autre solution de transaction que vous pourriez utiliser (PayPal?) offre un moyen de notification de paiement automatique, comme:

  • notification par e-mail par transaction
  • résumé quotidien des transactions par e-mail
  • quelques API décentes

Si une telle méthode est disponible, il ne reste plus qu'à écrire un script simple qui surveillerait les paiements. Vous pouvez simplement analyser les e-mails de la banque à la recherche des paiements mensuels de vos amis. Vous auriez besoin d'un fichier de configuration stockant le numéro de compte ou l'ID de chaque ami, la somme à payer (qui peut également être une constante globale) et l'adresse MAC.

Le script ajusterait ensuite les entrées du pare-feu en fonction de l'état de paiement mensuel.

Ensuite, informez vos amis des options de paiement disponibles et - tout en configurant votre pare-feu - n'oubliez pas de leur fournir l'accès au mécanisme de paiement afin qu'ils puissent quand même payer en cas de dépassement de la période de grâce de 3 jours :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X