GNU/Linux >> Tutoriels Linux >  >> Linux

Envoyer des notifications et des rappels de bureau à partir du terminal Linux

Il est parfois utile d'obtenir un retour visuel d'un script. Par exemple, lorsqu'un script ou une tâche cron se termine, une génération de longue durée échoue ou il y a un problème urgent lors de l'exécution du script. Les applications de bureau peuvent le faire avec des notifications contextuelles, mais cela peut également être fait à partir d'un script ! Vous pouvez utiliser des commandes de script pour vous envoyer des notifications et des rappels sur le bureau.

Le code ci-dessous a été écrit et testé sur Linux. Cela peut également être fait sur macOS avec un peu d'effort. Voir la dernière section pour quelques trucs et astuces.

Envoi de notifications depuis le terminal Linux

Pour envoyer des notifications depuis le terminal Linux, utilisez le notify-send commande. Il est souvent déjà installé sur votre bureau, mais vous pouvez exécuter which  notify-send confirmer. S'il n'est pas encore installé, installez-le avec le gestionnaire de packages de votre choix.

Sur Fedora et les distributions similaires, tapez :

$ sudo dnf install libnotify

Sur les distributions basées sur Debian, tapez :

$ sudo apt install notify-send

Quelques exemples de notifications simples :

$ notify-send "Dinner ready!"
$ notify-send "Tip of the Day" "How about a nap?"

Vous pouvez personnaliser la notification avec des options telles que le niveau d'urgence, l'icône personnalisée, etc. En savoir plus avec man notify-send . Vous pouvez utiliser un petit ensemble de balises HTML dans le corps de la notification pour donner une touche agréable à vos messages. De plus, les URL sont rendues cliquables. Par exemple :

$ notify-send -u critical \
  "Build failed!" \
  "There were <b>123</b> errors. Click here to see the results: http://buildserver/latest"

Les notifications envoyées sont récupérées par l'environnement de bureau et affichées comme n'importe quelle autre notification. Ils auront la même apparence, la même sensation et le même comportement.

Combiner notifier-envoyer avec at

Cron est couramment utilisé pour programmer des commandes à intervalles réguliers. Le at commande planifie l'exécution unique d'une commande à une heure spécifiée. Si vous l'exécutez comme ceci, il démarre en mode interactif, où vous pouvez entrer des commandes à exécuter à un moment donné :

$ at 12:00

Ce n'est pas utile pour les scripts. Heureusement, at accepte les paramètres de l'entrée standard afin que nous puissions l'utiliser de cette façon :

$ echo "npm run build" | at now + 1 minute
$ echo "backup-db" | at 13:00

Il existe de nombreuses façons de spécifier le temps. À partir de l'heure absolue, comme 10:00 dans le temps relatif, comme now + 2 hours , à des heures particulières telles que noon ou midnight . Nous pouvons le combiner avec notify-send pour nous montrer des rappels à un moment donné dans le futur. Par exemple :

$ echo "notify-send 'Stop it and go home now?' 'Enough work for today.' -u critical" | at now

La commande de rappel

Créez maintenant une commande Bash personnalisée pour vous envoyer des rappels. Que diriez-vous de quelque chose d'aussi simple et convivial que :

$ remind "I'm still here" now
$ remind "Time to wake up!" in 5 minutes
$ remind "Dinner" in 1 hour
$ remind "Take a break" at noon
$ remind "It's Friday pints time!" at 17:00

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

C'est mieux qu'Alexa ! Comment obtenir cette bonté ?

Voir le code ci-dessous. Il définit une fonction shell appelée rappeler , qui prend en charge la syntaxe ci-dessus. Le travail proprement dit se fait dans les deux dernières lignes. Le reste est responsable de l'aide, de la validation des paramètres, etc., ce qui correspond à peu près à la proportion de code utile par rapport au bruit blanc nécessaire dans toute grande application.

Enregistrez le code quelque part, par exemple, dans le ~/bin/remind fichier et sourcez la fonction dans votre .bashrc profil pour qu'il soit chargé lorsque vous vous connectez :

$ source ~/bin/remind

Rechargez le terminal, puis tapez rappel pour voir la syntaxe. Amusez-vous !

#!/usr/bin/env bash
function remind () {
  local COUNT="$#"
  local COMMAND="$1"
  local MESSAGE="$1"
  local OP="$2"
  shift 2
  local WHEN="$@"
  # Display help if no parameters or help command
  if [[ $COUNT -eq 0 || "$COMMAND" == "help" || "$COMMAND" == "--help" || "$COMMAND" == "-h" ]]; then
    echo "COMMAND"
    echo "    remind <message> <time>"
    echo "    remind <command>"
    echo
    echo "DESCRIPTION"
    echo "    Displays notification at specified time"
    echo
    echo "EXAMPLES"
    echo '    remind "Hi there" now'
    echo '    remind "Time to wake up" in 5 minutes'
    echo '    remind "Dinner" in 1 hour'
    echo '    remind "Take a break" at noon'
    echo '    remind "Are you ready?" at 13:00'
    echo '    remind list'
    echo '    remind clear'
    echo '    remind help'
    echo
    return
  fi
  # Check presence of AT command
  if ! which at >/dev/null; then
    echo "remind: AT utility is required but not installed on your system. Install it with your package manager of choice, for example 'sudo apt install at'."
    return
  fi
  # Run commands: list, clear
  if [[ $COUNT -eq 1 ]]; then
    if [[ "$COMMAND" == "list" ]]; then
      at -l
    elif [[ "$COMMAND" == "clear" ]]; then
      at -r $(atq | cut -f1)
    else
      echo "remind: unknown command $COMMAND. Type 'remind' without any parameters to see syntax."
    fi
    return
  fi
  # Determine time of notification
  if [[ "$OP" == "in" ]]; then
    local TIME="now + $WHEN"
  elif [[ "$OP" == "at" ]]; then
    local TIME="$WHEN"
  elif [[ "$OP" == "now" ]]; then
    local TIME="now"
  else
    echo "remind: invalid time operator $OP"
    return
  fi
  # Schedule the notification
  echo "notify-send '$MESSAGE' 'Reminder' -u critical" | at $TIME 2>/dev/null
  echo "Notification scheduled at $TIME"
}

Notifications faciles

Avec ces quelques commandes open source simples, vous pouvez intégrer vos propres scripts, applications et tâches à votre bureau. Essayez-le !


Cet article a été adapté avec la permission de l'auteur de l'article original, trouvé ici.


Linux
  1. Envoyer un e-mail à partir d'un terminal Linux ou d'un script à l'aide de la commande mail

  2. OBS Studio - Enregistrez et diffusez des vidéos en direct à partir du bureau Linux

  3. Comment utiliser SSMTP pour envoyer un e-mail à partir d'un terminal Linux

  4. Comment envoyer un e-mail avec pièce jointe et corps à partir de Linux

  5. comment se connecter à mysql et interroger la base de données à partir du terminal linux

Personnalisation de mon terminal Linux avec tmux et Git

Comment envoyer un message aux utilisateurs connectés dans le terminal Linux

11 raisons de migrer du bureau Windows vers le bureau Linux

Top 10 des distributions Linux pour ordinateur portable et de bureau

4 commandes pour arrêter Linux depuis le terminal

Mutt, Mail et Telnet - Envoyez des e-mails à partir de la ligne de commande Linux ou du terminal