로그인 쉘에 표시되는 내용을 어떻게 변경합니까?


23

프롬프트 ( .bashrc) 를 통해 셸에서 표시되는 방식을 조정하는 데 익숙해 졌지만 처음 로그인 할 때 표시되는 초기 항목을 변경하려고합니다. EC2 인스턴스에서 이것이 표시됩니다. 로그인 :

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


  Welcome to: 

    Wowza Media Server 2 for Amazon EC2

      Version: 2.0.0.08

내 집 민트 컴퓨터에서 로그인 할 때 다음과 같이 표시됩니다.

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

이것은 어디에 정의되어 있습니까? 미친 ASCII 예술 액션을 위해 어떻게 조정할 수 있습니까?

답변:


31

로그인 프롬프트 전에 표시되는 텍스트가 저장됩니다 /etc/issue( /etc/motd사용자가 로그인 한 후 쉘이 시작되기 전에 표시 되는 관련 파일 이 있습니다). 일반적인 텍스트 파일이지만 이스케이프 시퀀스를 허용합니다.

  • \b -현재 회선의 전송 속도.
  • \d -현재 날짜.
  • \s -시스템 이름, 운영 체제 이름
  • \l -현재 tty 라인의 이름.
  • \m-기계의 아키텍처 식별자, 예. i486
  • \n -시스템의 노드 이름 (호스트 이름이라고도 함)
  • \o -머신의 도메인 이름.
  • \r-OS의 릴리스 번호 (예 : 1.1.9.
  • \t -- 현재 시간.
  • \u -로그인 한 현재 사용자 수
  • \U -현재 로그인 한 사용자 수인 문자열 "1 user"또는 "users"
  • \v-OS 버전 (예 : 빌드 날짜 등

내 컴퓨터에는 다음이 있습니다.

이것은 \ n (\ s \ m \ r) \ t \ l입니다

다음과 같이 렌더링됩니다.

이것은 etudes-1입니다 (Linux x86_64 2.6.39-gentoo) 17:43:10 tty1


6

파일 /etc/issue/etc/issue.net로그인 프로그램에 의해 표시되는 파일입니다. 다른 답변에서 언급했듯이 특수 확장 문자를 넣을 수 있습니다. 그러나 linux_logo 프로그램 을 사용해 볼 수도 있습니다 . 정말 멋진 ASCII 아트 문제 파일을 생성 할 수 있습니다.


4

사용자는 로그인 후 표시되는 메시지에 대해 명확하게 묻습니다. 로그인 + 암호를 입력하기 전에 모든 "/ etc / issue"가 표시되므로 주제를 벗어납니다.

'로그인 쉘'단계는 다음과 같습니다.

  1. "/ etc / issue"에 포함 된 메시지 표시
  2. 사용자 요청 및 전달
  3. 오늘의 메시지 표시 :

    / etc / motd

    /etc/update-motd.d

  4. / etc / profile 및 ~ / .bash_profile을 시작하십시오

NB .bashrc는 NON 로그인 쉘에 대해 실행됩니다.

@Naftuli Kay는 ASCII 아트를 / etc / motd에 추가하거나 /etc/update-motd.d 또는 / etc / profile에 사용자 독립 인쇄를위한 스크립트를 추가하거나 ~ / .bash_profile을 단일 사용자 인쇄에 추가합니다


3

에서 우분투 질문 :

우분투 스플래시 화면 .png

의견 및 다른 사용자의 새로운 답변에 대해서는 위의 우분투 요청 링크를 확인하십시오 .

now bash 스크립트

무거운 리프팅은 다음을 나타내는 스플래시 구성 요소입니다.

$ 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  

예, 그것은 에드먼턴에서 -14이고 -23과 같습니다. 새로 도착한 툼 레이더 2013에서 주말 내내 즐거운 시간을 보내십시오! 밴쿠버 나 몬트리올로 이동하기 위해 이력서를 닦을 수도 있습니다.

코드는 다음과 같습니다.

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

전제 조건

멋진 시간 표시를 위해서는 다음을 설치해야합니다 toilet.

sudo apt install toilet

또 다른 멋진 시간 표시 (아주 멋진 것은 아님) 설치 figlet:

sudo apt install figlet

그렇지 않으면 시간이 "정상"글꼴로 표시됩니다.

날씨

날씨는 curl wttr.in/cityname?0명령 에 의해 제공됩니다 . 터미널에서 : curl wttr.in/:help자세한 내용 은 다음 을 사용 하십시오.

날씨 : 도시명 변경

이 코드 섹션을 수정하고 Edmonton도시 이름으로 변경 하려고합니다.

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

/Москва(모스크바) 와 같은 도시 이름에는 유니 코드가 지원됩니다 . YEGEdmonton 과 같은 공항 문자가 지원됩니다 .

날씨 : 국가 이름 제거

터미널이 92 자 너비로 설정되면 날씨가 "Edmonton, Canada"로 표시됩니다. 내 취향에 비해 너무 길다.

country.png의 날씨

터미널이 기본 80 자 너비로 설정된 경우 더 나쁩니다.

날씨 국가 이름 80 chars.png

문제를 피하기 위해 다음 코드를 사용하여 화면에 ", Countryname"이 표시되지 않습니다.

# 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

스크립트의이 부분에 대한 도움이 필요한 경우 아래 의견을 게시하여 도움을 받으십시오.

터미널 화면 너비 조정

다음을 변경하여 터미널 화면 너비의 간격을 조정하십시오.

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

모두 함께 묶어 ~/.bashrc

~/.bashrc파일을 편집 하고 아래에 다음 줄을 추가 하십시오 .

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

`~ / .bashrc '파일 변경 사항을 저장하십시오.

필요한 우분투 정보를 표시하려면 screenfetch:

sudo apt install screenfetch

screenfetch쇼핑 할 비슷한 디스플레이 패키지가 있습니다!

"─────────"명령 사이에 줄을 나누는 동일한 명령 프롬프트를 원하면 다음 줄을 변경하십시오.

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

구분선의 길이는 screenfetch출력 너비와 일치 합니다. 이 경우 너비는 92 자이며 gnome-terminal환경 설정이 이에 따라 설정됩니다.


1

로그인 중에 메시지를 표시하도록 ssh 데몬을 구성 할 수도 있습니다. sshd_config 파일에서 Banner 지시문과 함께 표시 할 파일을 지정하십시오.

Banner /etc/ssh/ssh_banner

파일 이름은 모든 파일이 될 수 있지만 온 전성을 위해 sshd_config 파일과 함께 / etc / ssh에 보관합니다.


0

데비안 호스트의 /etc/rc.local에 네트워크 주소로 / etc / issue를 생성하는 하나의 작은 스크립트.

/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

업데이트 : "ip -4 -br a"로 충분합니다. @Mathieu CAROFF!


man ip. -br스위치를 사용하십시오 . -4스위치 를 사용할 수도 있습니다 . 명령을로 단축 할 수 있습니다 ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'. 더 나은 방법을 사용하십시오 hostname -I.
Mathieu CAROFF

0

이 ssh Banner : Day Highlighting은 cal -h 대신 "ncal -bh> / tmp / terminal"에서만 작동합니다. cal -h가 더 이상 작동하지 않거나 존재하지 않습니다 (우분투 18.04)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.