Mi capita a volte di avere la necessità di recuperare informazioni sul sistema operativo linux e su altre informazioni legate al sistema e alla rete. Visto che non mi ricordo sempre tutti i comandi (considerato che lo uso solo nel tempo libero) ho scritto un programma bash da lanciare. Un volta eseguito (se non vengono forniti parametri in input) il programma visualizza le tipologie di informazioni e poi, una volta fatta la scelta, vengono mostrate le informazioni richieste. E’ anche possibile eseguire il programma passando direttamente il numero corrispondente all’opzione desiderata. Fin che c’ero ho cercato di utilizzare i principali costrutti come l’if e il case.

    #!/bin/bash
    if [ $# -eq 0 ]; 
    then 
    #se non è stato passato il parametro viene visualizzato il menù con
    #le opzioni
    echo "################################################"
    echo "# Visualizza le info del sistema e dell'utente #"
    echo "# 1 - Informazioni dal 'printenv'              #"
    echo "# 2 - Informazioni generiche sul sistema       #"
    echo "# 3 - Informazioni di rete                     #"
    echo "# 4 - Informazioni sulla release               #"
    echo "# 5 - Informazioni sulla CPU                   #"
    echo '# 6 - Varie                                    #'
    echo "################################################"
    read -p "Scegli l'opzione:" OPZ
    else 
    #altrimenti il parametro passato viene messo nella varibile di scelta
    OPZ=$1
    fi

    case $OPZ in
    1) 
    clear 
    echo "---===] Informazioni dal 'printenv' [===---"
    printenv|grep SHELL
    printenv|grep USER
    printenv|grep DESKTOP_SESSION
    printenv|grep LANG
    printenv|grep CINNAMON_SESSION
    printenv|grep HOME
    ;;
    2) 
    clear
    echo "---===] Informazioni generiche sul sistema [===---"
    echo "Nome host: "`uname -n`
    echo "Sistema basato su: "`uname -s`
    echo "Sistema operativo: "`uname -o`
    echo "Kernel release: "`uname -r`
    echo "Kernel version: "`uname -v`
    ;;
    3)
    clear
    echo "---===] Informazioni di rete [===---"
    echo "Nome host: "`hostname`
    echo "Indirizzo IP: "`hostname -i`
    echo "Indirizzo IP internet: "`hostname -I`
    ;;
    4)
    clear
    echo "---===] Informazioni sulla release [===---"
    echo "Distribuzione: "`lsb_release -is`
    echo "Descrizione: "`lsb_release -ds`
    echo "Numero di release: "`lsb_release -rs`
    echo "Nome in codice della release: "`lsb_release -cs`
    ;;
    5)
    clear
    echo "---===] Informazioni sulla CPU [===---"
    cat /proc/cpuinfo|grep vendor_id |uniq
    cat /proc/cpuinfo|grep 'model name' |uniq
    cat /proc/cpuinfo|grep 'cache size' |uniq
    lscpu|grep Architecture
    lscpu|grep 'CPU op-mode'
    lscpu|grep 'CPU(s)'|head -1
    ;;
    6)
    clear
    echo "---===] Varie [===---"
    ls -l /usr/share/xsessions/
    ;;
    esac