web-dev-qa-db-fra.com

Comment créer un menu système (mini panneau de commande)

Je veux faire le menu système après la connexion à mon serveur Ubuntu comme cette image:

image

Pour changer mon adresse IP Ethernet, l'heure locale et d'autres éléments importants pour moi, je ne sais pas comment atteindre ces paramètres?

1
Devigner3D

Je ne sais pas où chaque option du exemple fait référence. Voici un tutoriel de travail - Comment créer un script avec un menu similaire.

Vous devez d’abord installer dialog. Cette application fournit une méthode d'affichage de plusieurs types différents de boîtes de dialogue à partir de scripts Shell:

Sudo apt install dialog

Ensuite, créez un fichier exécutable, appelons-le smenu et placez-le dans le répertoire /usr/local/bin/ afin qu'il soit accessible en tant que système de commande Shell:

Sudo touch /usr/local/bin/smenu
Sudo chmod +x /usr/local/bin/smenu
Sudo nano /usr/local/bin/smenu

Le contenu du script devrait ressembler à ceci:

#!/bin/bash
HEIGHT=18
CHOICE_HEIGHT=10
WIDTH=78
BACKTITLE="SYSTEM MENU"
TITLE="[ M A I N - M E N U ]"
MENU="Tasks:"

OPTIONS=(
Network/IP   "IP Settings         [Sudo nano /etc/hosts                ]"
Network/DNS  "DNS Settings        [Sudo nano /etc/resolv.conf          ]"
Network/IFCS "Network Interfaces  [Sudo nano /etc/network/interfaces   ]"
Timezone     "Set Time Zone       [Sudo dpkg-reconfigure tzdata        ]"
Reboot       "Reboot the System   [Sudo systemctl reboot               ]"
Shutdown     "Shutdown the System [Sudo shutdown                       ]"
Logout/Exit  "Logout the Session  [logout                              ]"
Update       "Update & Upgrade & autoRemove & autoClean   [Sudo apt ...]"
Edit         "Edit this script    [Sudo nano /usr/local/bin/system-menu]"
Shell        "Exit to Shell"
)

CHOICE=$(dialog --clear \
    --backtitle "$BACKTITLE" \
    --title "$TITLE" \
    --menu "$MENU" \
    $HEIGHT $WIDTH $CHOICE_HEIGHT \
    "${OPTIONS[@]}" \
    2>&1 >/dev/tty)

clear
case $CHOICE in
    Network/IP)
        Sudo nano /etc/hosts
        ;;

    Network/DNS)
        Sudo nano /etc/resolv.conf
        ;;

    Network/IFCS)
        Sudo nano /etc/network/interfaces
        ;;

    Timezone)
        Sudo dpkg-reconfigure tzdata
        ;;

    Reboot)
        Sudo systemctl reboot
        ;;

    Shutdown)
        Sudo shutdown
        ;;

    Exit)
        logout
        ;;

    Update)
        Sudo apt update && Sudo apt upgrade && Sudo apt autoremove && Sudo apt autoclean
        echo "**"
        Sudo uname -a
        echo "**"
        Sudo lsb_release -a
        echo "**"
        [ -e /var/run/reboot-required* ] && echo "Reboot is required!" || echo "Reboot is not required."
        ;;

    Edit)
        Sudo nano /usr/local/bin/smenu
        ;;

    Shell)
        exit
        ;;
esac
  • Copiez le contenu ci-dessus et utilisez-le dans nanoShift+Insert pour la pâte; Ctrl+O et Enter pour sauver; Ctrl+X pour la sortie.
  • Toutes les commandes utilisées dans le script sont disponibles dans Ubuntu 16.04.
  • Le contenu entre crochets [...] n'est qu'un rappel de ce qui sera exécuté.

Vous pourrez maintenant accéder au script via la commande smenu. Le résultat devrait être:

enter image description here

Si vous souhaitez ouvrir ce script après vous être connecté à un terminal, ajoutez la ligne suivante au bas du fichier ~/.bashrc:

/usr/local/bin/smenu

Au lieu de dialog, l'outil whiptail peut être utilisé. Il offre une grande partie des mêmes fonctionnalités (et options) que dialog et est installé par défaut dans la plupart des distributions Ubuntu. Pour ce faire, utilisez le script ci-dessus et modifiez la ligne 22 de cette manière:

CHOICE=$(whiptail --clear \

Maintenant, le résultat de notre script/commande smenu devrait ressembler à ceci:

enter image description here

1
pa4080