|

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

  • Hotspot Wifipak : pourquoi ? comment ?

    Retour sur le hotspot Wifipak que vous êtes désormais nombreux à utiliser, un gestionnaire compact, simple, associé si besoin à un enregistreur de connexions. Son succès vient de sa modularité et de l’accès total au système que nous avons : chaque Wifipak est assemblé selon les besoins de nos clients, au cas par cas, configuré par défaut en tenant compte des spécificités de base de votre réseau local.

  • Mise à jour

    Avec un petit peu de retard, le blog a été mis à jour voici quelques jours, passant sur une version encore plus sécurisée de WordPress. A priori rien de cassé lors de la transition, effectuée lors de notre séjour aux Vieilles Charrues 😉

  • |

    Orange subventionne l’iPad

    Sur le plateau de la chaine d’information BFM Business, le PDG d’Orange France Télécom a annoncé ce matin qu’Orange avait obtenu le feu vert d’Apple pour subventionner l’iPad. La tablette de la Pomme devrait prochainement être commercialisée, à un tarif d’environ 275 €, sous réserve bien évidemment d’un abonnement à l’un des forfaits ad-hoc de l’opérateur, pour environ 30 € mensuels. C’est un tournant important dans la politique d’Apple qui refusait jusqu’à présent les subventions sur l’iPad, contrairement à celles…

  • Routerstation : WiFi et 3G !

    Un nouvel article sur le wiki d’Ubiquiti, concernant la possibilité d’ajouter un modem GSM à la platine Routerstation. L’article ne mentionne pas la 3G, mais à priori tout modem devrait s’adapter. Le modem en question sera USB, précision qui a son importance. L’intérêt de tout cela ? Disposer par exemple d’une solution de backup pour un point d’accès WiFi, ou plus simplement proposer un point d’accès WiFi utilisant la 3G pour « sortir » vers internet. La page Wiki est par ici,…

  • |

    Tout savoir sur les antennes WiFi… ou pas…

    Si vous voulez tout savoir sur les antennes WiFi et leurs performances, ne manquez pas le superbe article d’Excite, une véritable bible d’informations pour qui ne connaîtrait pas le WiFi, tel son auteur par exemple. Vous pourrez ainsi apprendre que les antennes, les câbles, mais aussi les accessoires seront homologués FCC (l’organisme certificateur… américain !), mais également que le gain déterminera la puissance (sic), sans qu’il ne soit abordé l’aspect de l’angle d’ouverture par exemple. De la même, une « antenne…