Bagaimana saya bisa mengubah apa yang ditampilkan di shell login?

23

Saya menjadi lebih terbiasa dengan mengutak-atik cara hal terlihat di shell melalui prompt ( .bashrc), tapi saya sekarang mencoba untuk mengubah hal-hal awal yang ditampilkan ketika saya pertama kali masuk. Pada contoh EC2 saya, ini adalah apa yang saya lihat saat Saya masuk:

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


  Welcome to: 

    Wowza Media Server 2 for Amazon EC2

      Version: 2.0.0.08

Di komputer Mint rumah saya, inilah yang saya lihat ketika saya masuk:

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

Di mana ini didefinisikan? Bagaimana saya bisa mengubahnya untuk beberapa ACTION seni ASCII gila ?

Naftuli Kay
sumber

Jawaban:

31

Teks yang ditampilkan sebelum prompt login disimpan /etc/issue(ada file terkait /etc/motd,, yang ditampilkan setelah pengguna masuk, sebelum shell mereka dimulai). Ini hanya file teks biasa, tetapi menerima banyak urutan pelarian:

  • \b - Baudrate dari baris saat ini.
  • \d -- Tanggal sekarang.
  • \s - Nama sistem, nama sistem operasi.
  • \l - Nama garis tty saat ini.
  • \m- Pengidentifikasi arsitektur mesin, mis. i486
  • \n - Nama file mesin, juga dikenal sebagai nama host.
  • \o - Domainname mesin.
  • \r- Nomor rilis OS, mis. 1.1.9.
  • \t -- Waktu saat ini.
  • \u - Jumlah pengguna saat ini yang login.
  • \U - String "1 pengguna" atau "pengguna" di mana jumlah pengguna saat ini yang masuk.
  • \v- Versi OS, mis. tanggal pembuatan, dll.

Di mesin saya, saya punya:

Ini adalah \ n (\ s \ m \ r) \ t \ l

Yang diterjemahkan sebagai:

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

Michael Mrozek
sumber
6

File /etc/issuedan /etc/issue.netmerupakan file yang ditampilkan oleh program login. Anda dapat memasukkan karakter ekspansi khusus di dalamnya, seperti yang dicatat pada jawaban lainnya. Tetapi Anda mungkin juga ingin mencoba program linux_logo . Itu dapat menghasilkan file isu seni ASCII yang sangat bagus untuk Anda.

Keith
sumber
4

pengguna dengan jelas menanyakan tentang pesan yang ditampilkan SETELAH masuk, semua "/ etc / issue" ditampilkan SEBELUM masuk + kata sandi dimasukkan begitu di luar topik.

Langkah-langkah 'shell masuk' adalah:

  1. tampilkan pesan yang ada di "/ etc / issue"
  2. meminta pengguna dan lulus
  3. tampilkan Pesan Dari Hari Ini dari:

    / etc / motd

    /etc/update-motd.d

  4. mulai / etc / profile dan ~ / .bash_profile

NB .bashrc dieksekusi untuk shell login NON

@Naftuli Kay menambahkan seni ASCII Anda ke / etc / motd atau tambahkan skrip di /etc/update-motd.d atau / etc / profile untuk cetakan independen pengguna, atau ~ / .bash_profile untuk cetakan pengguna tunggal

Valerio
sumber
3

Dari Ask Ubuntu :

Ubuntu splash screen.png

Periksa tautan Tanya Ubuntu di atas untuk komentar dan kemungkinan jawaban baru dari pengguna lain.

now skrip bash

Lift berat adalah komponen splash yang menunjukkan ini:

$ 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  

Ya itu benar-benar -14 di Edmonton dan terasa seperti -23. Waktu yang tepat untuk menghabiskan akhir pekan panjang di dalam bermain Tomb Raider 2013 yang baru tiba! Mungkin memoles Resume untuk pindah ke Vancouver atau Montreal ...

Ini kodenya:

#!/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

Prasyarat

Untuk tampilan waktu mewah Anda perlu menginstal toilet:

sudo apt install toilet

Untuk tampilan waktu mewah lainnya (tapi tidak semewah) pasang figlet:

sudo apt install figlet

Kalau tidak, waktu akan ditampilkan dalam font "normal".

Cuaca

Cuaca disediakan oleh curl wttr.in/cityname?0perintah. Dalam penggunaan terminal Anda: curl wttr.in/:helpuntuk detail tambahan.

Cuaca: Ubah nama kota

Anda ingin memodifikasi bagian kode ini dan mengubah Edmontonnama kota Anda:

# 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 didukung untuk nama-nama kota seperti /Москва(Moskow). Surat bandara didukung seperti YEGuntuk Edmonton.

Cuaca: Hapus nama negara

Ketika terminal diatur untuk lebar 92 karakter, cuaca ditampilkan sebagai "Edmonton, Kanada." yang terlalu lama untuk seleraku:

Cuaca dengan country.png

Lebih buruk lagi ketika terminal diatur untuk lebar 80 karakter default:

Nama negara cuaca 80 chars.png

Untuk menghindari masalah, ", Nama Negara" dicoret di layar dengan kode ini:

# 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

Jika Anda perlu bantuan dengan bagian skrip ini, silakan kirim komentar di bawah untuk bantuan.

Penyesuaian lebar layar terminal

Sesuaikan jarak ke lebar layar terminal Anda dengan mengubah:

# 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 "   "   "   "

Mengikat semuanya bersama ~/.bashrc

Edit ~/.bashrcfile Anda dan tambahkan baris ini ke bawah:

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

Simpan perubahan file `~ / .bashrc".

Untuk menampilkan informasi Ubuntu yang Anda butuhkan screenfetch:

sudo apt install screenfetch

Ada paket display serupa untuk screenfetchjadi berbelanja!

Jika Anda ingin prompt perintah yang sama dengan "─────────" membagi garis antara perintah, ubah baris ini:

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

Perhatikan panjang garis pemisah bertepatan dengan lebar screenfetchkeluaran. Dalam hal ini lebarnya 92 karakter dan gnome-terminalpreferensi diatur sesuai.

WinEunuuchs2Unix
sumber
1

Anda juga dapat mengkonfigurasi daemon ssh untuk menampilkan pesan saat login. Tentukan file yang akan ditampilkan dengan direktif Banner di file sshd_config:

Banner /etc/ssh/ssh_banner

Nama file bisa berupa file apa saja, tetapi untuk kewarasan saya menyimpannya di / etc / ssh bersama dengan file sshd_config.

dr-jan
sumber
0

Satu skrip kecil untuk menghasilkan / etc / issue dengan alamat jaringan di /etc/rc.local dari 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

pembaruan: kedengarannya sudah cukup dengan "ip -4 -br a" terima kasih @Mathieu CAROFF!

Howard.TH
sumber
man ip. Gunakan -brsakelar. Anda mungkin juga ingin menggunakan -4sakelar. Perintah Anda dapat disingkat menjadi ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'. Bahkan lebih baik, gunakan hostname -I.
Mathieu CAROFF
0

PENTING untuk menggunakan Spanduk ssh ini: Sorotan Hari hanya berfungsi dengan "ncal -bh> / tmp / terminal" bukan cal -h. cal -h tidak berfungsi / ada lagi (Ubuntu 18.04)

Goasler
sumber