Come posso modificare ciò che viene visualizzato in una shell di accesso?


23

Sto acquisendo maggiore familiarità con il modo in cui le cose appaiono in una shell tramite il prompt ( .bashrc), ma ora sto provando a cambiare le cose iniziali visualizzate al primo accesso. Nella mia istanza EC2, questo è quello che vedo quando Accedo:

         __|  __|_  )  Fedora 8
         _|  (     /    32-bit
        ___|\___|___|


  Welcome to: 

    Wowza Media Server 2 for Amazon EC2

      Version: 2.0.0.08

Sul mio computer Mint di casa, ecco cosa vedo quando eseguo l'accesso:

Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic x86_64)

Welcome to Linux Mint
* Documentation:  http://www.linuxmint.com

Last login: Tue Jun 21 17:44:05 2011

Dove viene definito? Come posso modificarlo per un po 'pazza arte ASCII AZIONE ?

Risposte:


31

Il testo visualizzato prima della richiesta di accesso è memorizzato /etc/issue(c'è un file correlato /etc/motd, che viene visualizzato dopo che l'utente ha effettuato l'accesso, prima che la sua shell sia avviata). È solo un normale file di testo, ma accetta una serie di sequenze di escape:

  • \b - Baudrate della linea corrente.
  • \d -- Data odierna.
  • \s - Nome del sistema, il nome del sistema operativo.
  • \l - Nome dell'attuale riga tty.
  • \m- Identificatore dell'architettura della macchina, ad es. i486
  • \n - Nome nodo della macchina, noto anche come nome host.
  • \o - Domainname della macchina.
  • \r- Numero di rilascio del sistema operativo, ad es. 1.1.9.
  • \t -- Ora attuale.
  • \u - Numero di utenti correnti connessi.
  • \U - La stringa "1 utente" o "utenti" in cui è il numero di utenti correnti connessi.
  • \v- Versione del sistema operativo, ad es. la data di costruzione ecc.

Sulla mia macchina ho:

Questo è \ n (\ s \ m \ r) \ t \ l

Che è reso come:

Questo è etudes-1 (Linux x86_64 2.6.39-gentoo) 17:43:10 tty1


6

Il file /etc/issuee /etc/issue.netsono i file visualizzati dal programma di accesso. Puoi inserire caratteri di espansione speciali, come indicato nell'altra risposta. Ma potresti anche voler provare il programma linux_logo . Può generare file di problemi di ASCII art davvero belli per te.


4

l'utente sta chiaramente chiedendo dei messaggi visualizzati DOPO il login, tutti gli "/ etc / issue" sono visualizzati PRIMA di inserire login + password, quindi sono fuori tema.

I passaggi della "shell di accesso" sono:

  1. mostra i messaggi contenuti in "/ etc / issue"
  2. chiedere l'utente e passare
  3. mostra il messaggio del giorno da:

    / Etc / motd

    /etc/update-motd.d

  4. avvia / etc / profile e ~ / .bash_profile

NB .bashrc viene eseguito per la shell NON login

@Naftuli Kay aggiungi la tua arte ASCII a / etc / motd o aggiungi script in /etc/update-motd.d o / etc / profile per stampe indipendenti dall'utente, o ~ / .bash_profile per stampe a singolo utente


3

Da Ask Ubuntu :

Ubuntu splash screen.png

Controlla il link Ask Ubuntu sopra per commenti e possibilmente nuove risposte da altri utenti.

now script bash

Il sollevamento pesante è il componente splash che mostra questo:

$ now

Weather report: Edmonton               March 2018            ┌────────────────────────────┐
                                  Su Mo Tu We Th Fr Sa          ┏━┓╺┓  ┏━┓┏━┓   ┏━┓┏┳┓   
     \   /     Sunny                           1  2  3          ┃┃┃  ╹┏━┛┗━┫   ┣━┛┃┃┃   
      .-.      -23--14 °C          4  5  6  7  8  9 10          ┗━┛╺┻╸╹┗━╸┗━┛         
    (   )     22 km/h          11 12 13 14 15 16 17       └────────────────────────────┘
      `-’      14 km              18 19 20 21 22 23 24  
     /   \     0.9 mm             25 26 27 28 29 30 31  

Sì, è davvero -14 a Edmonton e sembra -23. Un buon momento per trascorrere il lungo weekend all'interno giocando al Tomb Raider 2013 appena arrivato! Forse rispolverare quel curriculum per trasferirsi a Vancouver o Montreal ...

Ecco il codice:

#!/bin/bash

# NAME: now
# PATH: $HOME/bin
# DESC: Display current weather, calendar and time
# CALL: Called from terminal or ~/.bashrc
# DATE: Apr 6, 2017. Modified: Mar 30, 2018.

# NOTE: To display all available toilet fonts use this one-liner:
#       for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done

# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for   "   "   "   "    61 "   "   "   "

#--------- WEATHER ----------------------------------------------------------

# Current weather, already in color so no need to override
echo " "
# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^

echo " "
echo " "                # Pad with blank lines for calendar & time to fit

#--------- DATE -------------------------------------------------------------

# calendar current month with today highlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
#        36=cyan, 37=white

tput sc                 # Save cursor position.
# Move up 9 lines
while [ $((++i)) -lt 10 ]; do tput cuu1; done

# Depending on length of your city name and country name you will:
#   1. Comment out next three lines of code. Uncomment fourth code line.
#   2. Change subtraction value and set number of print spaces to match
#      subtraction value. Then place comment on fourth code line.

Column=$(($DateColumn - 10))
tput cuf $Column        # Move x column number
printf "          "     # Blank out ", country" with x spaces
#tput cuf $DateColumn    # Position to column 27 for date display


# -h needed to turn off formating: /ubuntu/1013954/bash-substring-stringoffsetlength-error/1013960#1013960
cal -h > /tmp/terminal

CalLineCnt=1
Today=$(date +"%d")
# Prefix with space when length < 2
if [[ ${#Today} < 2 ]] ; then
    Today=" "$Today
fi
printf "\033[32m"   # color green -- see list above.

while IFS= read -r Cal; do
    printf "$Cal"
    if [[ $CalLineCnt > 2 ]] ; then
        # See if today is on current line & invert background
        tput cub 22
        for (( j=0 ; j <= 18 ; j += 3 )) ; do
            Test=${Cal:$j:2}            # Current day on calendar line
            if [[ "$Test" == "$Today" ]] ; then
                printf "\033[7m"        # Reverse: [ 7 m
                printf "$Today"
                printf "\033[0m"        # Normal: [ 0 m
                printf "\033[32m"       # color green -- see list above.
                tput cuf 1
            else
                tput cuf 3
            fi
        done
    fi

    tput cud1               # Down one line
    tput cuf $DateColumn    # Move 27 columns right
    CalLineCnt=$((++CalLineCnt))
done < /tmp/terminal

printf "\033[00m"           # color -- bright white (default)
echo ""

tput rc                     # Restore saved cursor position.

#-------- TIME --------------------------------------------------------------

tput sc                 # Save cursor position.
# Move up 9 lines
i=0
while [ $((++i)) -lt 10 ]; do tput cuu1; done
tput cuf $TimeColumn    # Move 49 columns right

# Do we have the toilet package?
if hash toilet 2>/dev/null; then
    echo " "$(date +"%I:%M %P")" " | \
        toilet -f future --filter border > /tmp/terminal
# Do we have the figlet package?
elif hash figlet 2>/dev/null; then
    echo $(date +"%I:%M %P") | figlet > /tmp/terminal
# else use standard font
else
    echo $(date +"%I:%M %P") > /tmp/terminal
fi

while IFS= read -r Time; do
    printf "\033[01;36m"    # color cyan
    printf "$Time"
    tput cud1               # Up one line
    tput cuf $TimeColumn    # Move 49 columns right
done < /tmp/terminal

tput rc                     # Restore saved cursor position.

exit 0

Prerequisiti

Per la visualizzazione del tempo di fantasia è necessario installare toilet:

sudo apt install toilet

Per un'altra visualizzazione dell'ora di fantasia (ma non altrettanto di fantasia) installare figlet:

sudo apt install figlet

Altrimenti l'ora verrà visualizzata in caratteri "normali".

Tempo metereologico

Il tempo è fornito dal curl wttr.in/cityname?0comando. Nel terminale utilizzare: curl wttr.in/:helpper ulteriori dettagli.

Meteo: cambia il nome della città

Ti consigliamo di modificare questa sezione di codice e cambiare Edmontonil nome della tua città:

# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^

Unicode è supportato per nomi di città come /Москва(Mosca). Sono supportate le lettere degli aeroporti come quelle YEGdi Edmonton.

Meteo: rimuovere il nome del paese

Quando il terminale è impostato per una larghezza di 92 caratteri, il tempo viene visualizzato come "Edmonton, Canada". che è troppo lungo per i miei gusti:

Meteo con country.png

Peggio ancora quando il terminale è impostato su 80 caratteri di default:

Meteo nome paese 80 chars.png

Per aggirare il problema, ", Countryname" viene oscurato sullo schermo con questo codice:

# Depending on length of your city name and country name you will:
#   1. Comment out next three lines of code. Uncomment fourth code line.
#   2. Change subtraction value and set number of print spaces to match
#      subtraction value. Then place comment on fourth code line.
Column=$(($DateColumn - 10))
tput cuf $Column        # Move x column number
printf "          "     # Blank out ", country" with x spaces
#tput cuf $DateColumn    # Position to column 27 for date display

Se hai bisogno di aiuto con questa parte dello script, pubblica un commento qui sotto per assistenza.

Regolazioni della larghezza dello schermo del terminale

Regola la spaziatura in base alla larghezza dello schermo del terminale modificando:

# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for   "   "   "   "    61 "   "   "   "

Legare tutto insieme ~/.bashrc

Modifica il tuo ~/.bashrcfile e aggiungi queste righe in fondo:

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

Salva le modifiche al file `~ / .bashrc".

Per visualizzare le informazioni di Ubuntu è necessario screenfetch:

sudo apt install screenfetch

Ci sono pacchetti di visualizzazione simili per screenfetchguardarsi intorno!

Se si desidera lo stesso prompt dei comandi con "─────────" che divide la riga tra i comandi, modificare queste righe:

if [ "$color_prompt" = yes ]; then
    PS1='───────────────────────────────────────────────────────────────────────────────────────────
${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='───────────────────────────────────────────────────────────────────────────────────────────
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

Notare che la lunghezza della linea di separazione coincide con la larghezza screenfetchdell'output. In questo caso è largo 92 caratteri e le gnome-terminalpreferenze sono impostate di conseguenza.


1

È inoltre possibile configurare il demone ssh per visualizzare un messaggio durante l'accesso. Specificare il file da visualizzare con la direttiva Banner nel file sshd_config:

Banner /etc/ssh/ssh_banner

Il nome file può essere qualsiasi file, ma per sanità mentale lo tengo in / etc / ssh insieme al file sshd_config.


0

Un piccolo script per generare il problema / etc / con l'indirizzo di rete in /etc/rc.local dell'host debian.

/bin/echo "This is \n(\s \m \r) \t \l">/etc/issue
/bin/sleep 10 # This is optional, sometimes OS need more time to get ip address while DHCP, otherwise maybe you will get nothing :(
/sbin/ip a| /bin/grep inet| /bin/grep -v -E "inet6|127.0.0.1"| /bin/sed "s/\s*//"|/bin/sed "s/\/24.*//" >>/etc/issue

aggiornamento: suona abbastanza con "ip -4 -br a" grazie @Mathieu CAROFF!


man ip. Usa l' -brinterruttore. Potresti anche voler usare l' -4interruttore. Il tuo comando può essere abbreviato in ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'. Ancora meglio, usa hostname -I.
Mathieu CAROFF,

0

IMPORTANTE per l'uso di questo banner ssh: Day Highlighting funziona solo con "ncal -bh> / tmp / terminal" invece di cal -h. cal -h non funziona / esiste più (Ubuntu 18.04)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.