1 votes

Nettoyer la sortie d'une commande pour la transmettre à notify-send

Ubuntu 18.04

ExpressVPN n'a pas d'interface graphique ou d'icône pour la version Linux. J'ai donc rassemblé des fichiers .desktop qui et ensuite ajouté des boutons cliquables sur ma barre des tâches pour les déclencher. Les fichiers .desktop déclenchent des scripts qui exécutent des commandes pour connecter le VPN, ou le déconnecter, ou afficher un message pop-up indiquant le statut actuel.

C'est sur le statut que j'ai besoin de conseils. La commande pour obtenir le statut est :

expressvpn status

En exécutant cette commande dans le terminal, si le VPN est déconnecté, ce que vous voyez est :

Not connected

Si le VPN est connecté, ce que vous voyez est :

Connected

Mon bouton de la barre des tâches déclenche ce script :

#!/bin/bash
MESSAGE="expressvpn status"
notify-send --expire-time=500 "`$MESSAGE`"

Maintenant, ça marche. J'obtiens les informations dont j'ai besoin. Mais il y a quelque chose que je n'aime pas. Ce n'est pas critique, mais j'aimerais comprendre pourquoi ça arrive et si ça peut être changé.

Il fonctionne très bien si le VPN est déconnecté, je vois une pop-up qui dit "Non connecté" :

clean pop up message

Cependant, si le VPN est connecté, ce que je vois est assez moche. Cela ressemble à ceci :

ugly pop up message

Si j'écris la même sortie dans un fichier texte, il contient ce texte :

[1;32;49mConnected to UK - East London
[0m
   - If your VPN connection unexpectedly drops, internet traffic will be blocked to protect your privacy.
   - To disable Network Lock, disconnect ExpressVPN then type 'expressvpn preferences set network_lock off'.

Idéalement, je voudrais qu'il ne contienne que la ligne en vert montrée dans la capture d'écran ci-dessus - " Connecté à [quelle que soit la connexion en cours]. ".

Des idées ?

Merci !

2voto

Andy J Points 340

Le script utilise Codes d'échappement ANSI pour colorer la sortie. Se débarrasser d'eux est discuté aquí en général.

Si vous êtes en mesure d'installer des paquets, ansi2txt du paquet colorized-logs comme mentionné dans cette réponse va les dépouiller.

Quelque chose comme expressvpn status | ansi2txt | grep -i connected devrait donner un résultat avec lequel vous pouvez travailler.

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