|

Mikrotik, hotspot, et imprimante

Longtemps assez dégoûté du peu d’ergonomie de RouterOS, le firmware des matériels Mikrotik, j’ai été contraint de passer énormément de temps pour chercher à mieux le comprendre. Désormais, maitrisant le système, il est facile de venir développer des solutions originales, comme la gamme Wifipak Mini par exemple, et ce n’est pas terminé.

Wifipak Mini + 4 bornes PoE

C’est souvent en expérimentant qu’arrivent souvent les idées intéressantes. Tenez, là il est question d’aller générer des utilisateurs à la volée dans le User Manager de Mikrotik, depuis un script Python sur un Raspberry Pi, et pourquoi pas le Raspberry Pi utilisé comme enregistreur de connexions tiens !

Prenons donc notre Mikrotik préconfiguré en hotspot, muni de son User Manager, sans mot de passe, avec l’IP 192.168.1.123. Depuis notre Raspberry Pi, nous allons créer le script Python mikro.py après avoir installé au préalable Paramiko (je vous laisse chercher un peu sur Google, c’est assez simple) :

from random import choice
from string import digits
from string import ascii_lowercase
import paramiko
import time
target = '192.168.1.123'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(target, username='admin', password='', look_for_keys=False)
for x in range(0,10):
  login=''.join(choice(ascii_lowercase) for i in range(4))
  mdp=''.join(choice(ascii_lowercase) for i in range(4))
  msg = "/tool user-manager user add customer=admin username=us" + login + " password=" + mdp
  msg2 = "/tool user-manager user create-and-activate-profile us" + login + " customer=admin profile=wifipakmini"
  stdin,stdout,stderr = ssh.exec_command(msg)
  stdin,stdout,stderr = ssh.exec_command(msg2)
  time.sleep(0.8)
  stdin,stdout,stderr = ssh.exec_command(msg2)

A chaque exécution du script, nous allons générer deux variables, login et mdp contenant respectivement le login et le mot de passe d’un utilisateur. Cet utilisateur va être créé dans le gestionnaire Mikrotik et sera affecté au profile wifipakmini qui indique le temps disponible en ligne, 1 minute pour les essais.

Sur notre Mikrotik de test, peu puissant, une pause est nécessaire, ainsi qu’une répétition des commandes, sans cela certains utilisateurs ne sont pas affectés au profil wifipakmini et ne fonctionnent donc pas.

Ce script tourne 10 fois et va au final générer 10 utilisateurs d’un coup avec des logins qui débutent par « us ». Quel intérêt puisque le gestionnaire intégré permet de le faire ? Réfléchissez un peu, imaginez les possibilités et vous trouverez des applications potentiellement intéressantes.. En effet, si toi, ami Geek, tu es capable d’aller gérer en direct depuis le gestionnaire, quid de Mme Michu, paumée au fin fond de la Creuse, sans connaissances poussées en hotspot ? Ne va-t-elle pas préférer générer ses utilisateurs automatiquement et dans un langage clair, via une p’tite page html sur le Raspberry Pi par exemple ?

Allez, poussons un peu plus notre script, avec cette fois un nouveau, efface.py, qui sera lancé deux fois par jour par un simple Crontab sur le Raspberry Pi :

import paramiko
target = '192.168.1.123'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(target, username='admin', password='', look_for_keys=False)
msg = "/tool user-manager user remove [find uptime-used=1m]"
stdin,stdout,stderr = ssh.exec_command(msg)
print stdout.read()

Ici, nous allons chercher tous les utilisateurs ayant utilisé leur temps de connexion, 1m (= 1 minute) pour nos essais, mais ce peut-être 1d (= 1 jour) si vous modifiez le profil wifipakmini du gestionnaire Mikrotik. Tous les utilisateurs ayant la mention 1m dans uptime-used (= temps de connexion utilisé) seront ainsi effacés, évitant de saturer le hotspot avec des codes dévalidés.

Et après ?

Eh oui, tout ceci est bien mimi, c’est choupinou de générer des scripts, des utilisateurs, le principe fonctionne, mais après, que faire ? Imaginons par exemple que nous allons générer des planches avec tous les codes regroupés sur une seule et même feuille : le script se lance, une planche s’affiche en pdf ou en png, vous l’imprimez, tout ceci de façon simple, via un bout de script Php sur le Raspberry Pi, chargé de lancer toutes les actions.

Imaginons également que l’on vienne brancher une imprimante à tickets sur le Raspberry Pi : vous allez ainsi pouvoir générer un ticket à volonté, pourquoi pas en n’appuyant que sur un simple bouton installé sur la p’tite framboise. Et hop, un hotspot avec imprimante à ticket, pour un coût réduit, largement inférieur aux solutions commerciales habituelles, tel ce pack Zyxel vendu près de 1900 € avec enregistreur, WiFi local et imprimante :

Avec un calcul rapide et pas du tout optimisé, une solution équivalente pourrait sortir à bien moins cher, plus de deux fois moins cher en tout cas.

Vous le voyez, se creuser la tête avec des produits issus du monde libre permet de pas mal s’amuser. Le Raspberry Pi est un allié précieux pour développer, sa petite taille et sa modularité en font un outil indispensable pour développer de nouveaux projets.

 

 

Publications similaires

  • EOC1650 : un AP/client/bridge pas trop mal copié…

    Nous vous en avons parlé voici quelques semaines, l’EOC1650 est une réplique asiatique des modules Ubiquiti Picostation 2 ! Nous venons d’en recevoir et avons commencé quelques tests, en utilisant le firmware d’origine. Pour commencer, voici quelques photos de la bête. Voici l’EOC1650 muni de ses ventouses, permettant de le fixer aisément sur une vitre. Des fixations murales et pour mât sont également fournies, offrant de multiples possibilités d’installation. L’antenne externe n’est ici pas raccordée. Vous noterez toutefois les LEDs…

  • |

    Il a Free, il a envie de fuir, les échecs d’un SAV

    C’est bien connu, Free offre le meilleur-super-génial-extra service clients de tous les temps, les fanboys se sont suffisamment saisi de l’information, chez Univers Freebox par exemple. Ce prix délivré en interne par des professionnels qui sont d’accord avec eux même et s’auto-congratulent ne semble toutefois fois pas refléter la vérité dans le monde réel, comme vous pourrez le lire sur ce lien. Ici, c’est depuis le 20 Décembre 2017 qu’une demande d’assistance a été lancée, après 15 jours sans réponse…

  • l’iPhone et l’Android des Charrues

    Vous avez sans doute constaté que le site Web des Vieilles Charrues n’était pas accessible depuis un iPhone, visiblement une erreur de l’entreprise chargée du site internet 🙁 Qu’à cela ne tienne, une application iPhone est disponible sur l’Appstore : Vous y retrouverez tous les renseignements pratiques, les plans d’accès, des informations à jour et le programme du festival. Lien Appstore Vous n’utilisez pas d’iPhone mais un appareil Android ? L’application existe également : Lien Android

  • Webcampak Cloud en longue finale…

    La Longue Finale, un terme aéronautique pour désigner un appareil qui commence sa descente dans l’axe de la piste loin avant la trajectoire habituellement utilisée : vous prenez le temps de vous aligner, de commencer une descente douce, apercevant la piste au loin (encore plus spectaculaire en vol de nuit), puis arrivez à destination après en avoir pris plein les mirettes 😉 Webcampak Cloud est donc en longue finale chez Infracom, disposant d’une catégorie dédiée sur notre boutique en ligne. Il…

  • Nouvelle antenne omni 2.4 GHz

    Une nouvelle référence d’antenne omni 2.4 GHz a fait son apparition sur la boutique en ligne. Il s’agit d’une version avec 10 dBi de gain, sur embase magnétique, d’environ 50 cm de long, avec un coaxial terminé par un connecteur RP SMA mâle. Cette version remplace les modèles 7 dBi jusqu’à présent proposés. Pour plus de détails, suivez le guide 😉 ATTENTION : les quantités sont limitées, nous n’avons que 10 pièces pour le moment !

  • Un point d’accès, 4 cryptages

    Vous avez bien lu, sur un seul et même point d’accès, il est possible d’utiliser plusieurs cryptages : Wep, WPA, WPA2, voir aucun cryptage même. Comment ? Simplement en utilisant le firmware DD-WRT et en validant des réseaux WiFi virtuels : un nom pour chaque réseau, un cryptage ou non, une clé ou non, etc.  Tout est véritablement possible avec ce firmware, à vous de creuser un petit peu les nombreuses fonctions… Et si on imagine un routage spécifique pour…