Làm cách nào để thay đổi những gì hiển thị ở trình đăng nhập?


23

Tôi đã quen thuộc hơn với việc điều chỉnh cách mọi thứ nhìn vào vỏ thông qua dấu nhắc ( .bashrc), nhưng giờ tôi đang cố gắng thay đổi nội dung ban đầu được hiển thị khi tôi đăng nhập lần đầu. Trong ví dụ EC2 của tôi, đây là những gì tôi thấy khi Tôi đăng nhập:

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


  Welcome to: 

    Wowza Media Server 2 for Amazon EC2

      Version: 2.0.0.08

Trên máy tính Mint tại nhà của tôi, đây là những gì tôi thấy khi đăng nhập:

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

Điều này được định nghĩa ở đâu? Làm thế nào tôi có thể điều chỉnh nó cho một số HÀNH ĐỘNG nghệ thuật ASCII điên rồ ?

Câu trả lời:


31

Văn bản được hiển thị trước dấu nhắc đăng nhập được lưu trữ /etc/issue(có một tệp liên quan, /etc/motdđược hiển thị sau khi người dùng đăng nhập, trước khi trình bao của họ được bắt đầu). Nó chỉ là một tệp văn bản bình thường, nhưng nó chấp nhận một loạt các chuỗi thoát:

  • \b - Baudrate của dòng hiện tại.
  • \d -- Ngay hiện tại.
  • \s - Tên hệ thống, tên của hệ điều hành.
  • \l - Tên của dòng tty hiện tại.
  • \m- Định danh kiến ​​trúc của máy, vd. i486
  • \n - Tên nút của máy, còn được gọi là tên máy chủ.
  • \o - Tên miền của máy.
  • \r- Số phát hành của HĐH, vd. 1.1.9.
  • \t -- Thời điểm hiện tại.
  • \u - Số lượng người dùng hiện tại đăng nhập.
  • \U - Chuỗi "1 người dùng" hoặc "người dùng" trong đó số người dùng hiện tại đã đăng nhập.
  • \v- Phiên bản của HĐH, vd. ngày xây dựng, vv

Trên máy tôi có:

Đây là \ n (\ s \ m \ r) \ t \ l

Được hiển thị là:

Đây là etudes-1 (Linux x86_64 2.6,39-gentoo) 17:43:10 tty1


6

Các tập tin /etc/issue/etc/issue.netlà các tập tin được hiển thị bởi chương trình đăng nhập. Bạn có thể đặt các ký tự mở rộng đặc biệt trong đó, như đã lưu ý trong câu trả lời khác. Nhưng bạn cũng có thể muốn thử chương trình linux_logo . Nó có thể tạo ra các tệp vấn đề nghệ thuật ASCII thực sự tốt đẹp cho bạn.


4

người dùng rõ ràng đang hỏi về các tin nhắn được hiển thị SAU đăng nhập, tất cả "/ etc / vấn đề" được hiển thị TRƯỚC KHI đăng nhập + mật khẩu được nhập nên không đúng chủ đề.

Các bước 'vỏ đăng nhập' là:

  1. hiển thị các thông báo có trong "/ etc / vấn đề"
  2. yêu cầu người dùng và vượt qua
  3. hiển thị Thông điệp của ngày từ:

    / etc / motd

    /etc/update-motd.d

  4. bắt đầu / etc / profile và ~ / .bash_profile

NB .bashrc được thực thi cho shell đăng nhập NON

@Naftuli Kay thêm nghệ thuật ASCII của bạn vào / etc / motd hoặc thêm tập lệnh trong /etc/update-motd.d hoặc / etc / profile cho bản in độc lập của người dùng hoặc ~ / .bash_profile cho bản in của một người dùng


3

Từ hỏi Ubuntu :

Ubuntu giật gân screen.png

Kiểm tra liên kết Hỏi Ubuntu ở trên để nhận xét và có thể có câu trả lời mới từ những người dùng khác.

now kịch bản bash

Nâng vật nặng là thành phần giật gân cho thấy điều này:

$ 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  

Vâng, nó thực sự là -14 ở Edmonton và cảm thấy như -23. Một thời gian tốt để dành cuối tuần dài bên trong chơi Tomb Raider 2013 mới đến! Có thể tiếp tục với Resume đó để chuyển đến Vancouver hoặc Montreal ...

Đây là mã:

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

Điều kiện tiên quyết

Để hiển thị thời gian ưa thích, bạn cần cài đặt toilet:

sudo apt install toilet

Đối với một màn hình hiển thị thời gian ưa thích khác (nhưng không hoàn toàn như ưa thích) cài đặt figlet:

sudo apt install figlet

Nếu không, thời gian sẽ được hiển thị trong phông chữ "bình thường".

Thời tiết

Thời tiết được cung cấp bởi curl wttr.in/cityname?0lệnh. Trong thiết bị đầu cuối của bạn sử dụng: curl wttr.in/:helpđể biết thêm chi tiết.

Thời tiết: Thay đổi tên thành phố

Bạn sẽ muốn sửa đổi phần mã này và thay đổi Edmontonthành tên thành phố của bạn:

# 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 được hỗ trợ cho các tên thành phố như /Москва(Moscow). Thư sân bay được hỗ trợ như YEGđối với Edmonton.

Thời tiết: Xóa tên quốc gia

Khi thiết bị đầu cuối được đặt rộng 92 ký tự, thời tiết sẽ hiển thị là "Edmonton, Canada." quá dài so với sở thích của tôi:

Thời tiết với country.png

Tệ hơn nữa khi thiết bị đầu cuối được đặt cho độ rộng 80 ký tự mặc định:

Tên quốc gia thời tiết 80 chars.png

Để khắc phục sự cố, ", Tên quốc gia" được làm trống trên màn hình với mã này:

# 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

Nếu bạn cần trợ giúp với phần này của kịch bản, vui lòng gửi bình luận bên dưới để được hỗ trợ.

Điều chỉnh độ rộng màn hình đầu cuối

Điều chỉnh khoảng cách đến chiều rộng màn hình thiết bị đầu cuối của bạn bằng cách thay đổi:

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

Buộc tất cả lại với nhau trong ~/.bashrc

Chỉnh sửa ~/.bashrctệp của bạn và thêm các dòng này vào dưới cùng:

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

Lưu thay đổi tệp `~ / .bashrc".

Để hiển thị thông tin Ubuntu bạn cần screenfetch:

sudo apt install screenfetch

Có các gói hiển thị tương tự để screenfetchmua sắm xung quanh!

Nếu bạn muốn cùng một dấu nhắc lệnh với dòng chia "─────────" giữa các lệnh, hãy thay đổi các dòng sau:

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

Lưu ý chiều dài của đường phân cách trùng với chiều rộng của screenfetchđầu ra. Trong trường hợp này, nó rộng 92 ký tự và gnome-terminaltùy chọn được đặt tương ứng.


1

Bạn cũng có thể định cấu hình trình nền ssh để hiển thị thông báo trong khi đăng nhập. Chỉ định tệp sẽ hiển thị với chỉ thị Biểu ngữ trong tệp sshd_config:

Banner /etc/ssh/ssh_banner

Tên tệp có thể là bất kỳ tệp nào, nhưng để tỉnh táo, tôi giữ nó trong / etc / ssh cùng với tệp sshd_config.


0

Một tập lệnh nhỏ để tạo / etc / vấn đề với địa chỉ mạng trong /etc/rc.local của máy chủ 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

cập nhật: âm thanh là đủ với "ip -4 -br a" cảm ơn @Mathieu CAROFF!


man ip. Sử dụng công -brtắc. Bạn cũng có thể muốn sử dụng công -4tắc. Lệnh của bạn có thể được rút ngắn thành ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'. Thậm chí tốt hơn, sử dụng hostname -I.
Mathieu CAROFF

0

QUAN TRỌNG để sử dụng Biểu ngữ ssh này: Đánh dấu ngày chỉ hoạt động với "ncal -bh> / tmp / terminal" thay vì cal -h. cal -h không hoạt động / tồn tại nữa (Ubuntu 18.04)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.