Dans le cadre de scripts d’automatisation que je suis en train de préparer, j’exécute des commandes SSH à distance sur mon routeur WIFI piloté par DD-WRT. Ceci peut être utile pour la domotique par exemple, ou le monitoring de l’activité Wifi.
Pour ceux qui ne le connaissent pas, DD-WRT est un firmware Open Source pour routeur. A la base, il a été créé pour remplacer le firmware des WRT-54G de Linksys. Puis il s’est étendu à tout une liste de routeurs dont on retrouve la base de donnée sur le site dédié. On trouve des firmwares similaires tels que Open-WRT, ou Tomato. Tous ont leurs avantages, leurs inconvénients. J’ai choisi DD-WRT depuis plusieurs années.
Pour revenir à ma problématique, malheureusement celui-ci génère une bannière SSH à chaque démarrage sous /tmp/loginprompt. Du coup, à chaque commande SSH à distance, le résultat commence par deux lignes de ce type:
DD-WRT v3.0-r27506 std (c) 2015 NewMedia-NET GmbH
Release: 07/09/15
Gênant quand l’objectif est de retourner une valeur unique dans une variable. Et il ne suffit pas de modifier le fichier /tmp/loginprompt pour s’en débarrasser, comme celui-ci est généré depuis la NVRAM à chaque redémarrage. Après de longues recherches, j’ai trouvé un moyen plutôt simple à mettre en œuvre pour supprimer celle-ci.
Pour se faire, il faut se rendre dans l’interface Web de DD-WRT, puis sous l’onglet “Administration” => “Commands”, entrer la séquence suivante. Celle-ci va supprimer le fichier de bannière, recréer un fichier vide, et redémarrer le service sshd.
rm -f /tmp/loginprompt
touch /tmp/loginprompt
stopservice sshd
startservice sshd
Ensuite, il suffit de cliquer sur “Save startup”. La séquence sera alors exécutée à chaque démarrage, après la génération du fichier.