日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Linux中创建自己的MOTD[通俗易懂](Download)

發布時間:2023/12/19 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux中创建自己的MOTD[通俗易懂](Download) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)什么是MOTD

  motd:是英文縮寫message of the day 。譯文是:每日提示信息,問候報文。那你為什么要用MOTD?其實目的很簡單,是提示進入系統的用戶注意事項,或提示系統運行的概要信息讓用戶更好的了解系統。在Linux系統要實現自己的MOTD,首先需要認識/etc/motd文件。

  •  /etc/motd文件是什么?

    在linux世界中“一切皆文件”,/etc/motd也是眾多文件之一;那它有什么特別之處?/etc/motd文件作用是:每次系統登陸時,通過終端展示一些消息給登陸用戶,如向用戶提示歡迎信息,或提示使用系統的注意事項等等信息像公告板一樣為所有用戶提示信息。然而在/etc/motd文件只能添加靜態信息,而如果你想在用戶登錄時對提供動態的系統信息,如IP地址、系統負載等時,/etc/motd就無能為力了。但在/etc/motd顯示靜態信息內容時,可以對靜態文字增加顏色,以達到對重點信息內容的突出顯示。

  此外,作為ssh訪問系統用戶必須配置/etc/ssh/sshd_config文件。

1 vim  /etc/ssh/sshd_config
2 ……
3 PrintMotd yes           #遠程用戶登錄時是否打印/etc/motd文件信息           
4 ……         

 

2)如何顯示靜態MOTD

  如果想在用戶登陸時顯示靜態內容信息,只需要修改/etc/motd文件。同時還可在/etc/motd文件中還可以添加顏色及背景色,讓原本靜態內容更加生動更具提示效果。要想實現上述效果,必須在靜態信息內容前加上<ESC>[{attr};{fg};{bg}m 來提示xterm虛擬終端怎樣來顯示內容。

  • 顯示虛擬終端類型
1 $ env | grep TERM
2 $ set | grep TERM              //或用set
  • 提示終端添加顏色及背景的語句格式
<ESC>[{attr};{fg};{bg}m

  格式描述:
    1.<ESC> :可以在vim中輸入Ctrl+V后再按ESC。

    2.{attr} :表示屬性,包括下劃線,加粗等屬性。

      • 0 Reset All Attributes (return to normal mode) :恢復通用模式
      • 1 Bright (usually turns on BOLD) :加粗
      • 2 Dim
      • 3 Underline :下劃線
      • 5 Blink
      • 7 Reverse
      • 8 Hidden

    3.{fg} :表示字體顏色

      • 30 Black :黑色
      • 31 Red :紅色
      • 32 Green :綠色
      • 33 Yellow :黃色
      • 34 Blue :藍色
      • 35 Magenta :紫紅色
      • 36 Cyan :青色
      • 37 White :白色

    4.{bg} :表示背景色

      • 40 Black :黑色
      • 41 Red :紅色
      • 42 Green :綠色
      • 43 Yellow :黃色
      • 44 Blue :藍色
      • 45 Magenta :紫紅色
      • 46 Cyan :青色
      • 47 White :白色

  案例:    

1 [root@ecs-elk  ~]#vim /etc/motd
2 
3 ^[[0;31;40m Welcome to Huawei Cloud Service ^[[0;37;40m
4 
5 
6 [root@ecs-elk  ~]#

3)如何顯示動態MOTD

  靜態內容在提示公共信息上有效,但當用戶登錄系統時更多是需要了解系統運行狀態及一些系統信息。自然就需要顯示動態的信息內容。比如ip地址、硬盤占用、進程數等。那么怎么來實現上述動態的內容?那么首先看看linux用戶登錄及加載bash配置文件過程:

  用戶登錄時相關bash配置文件:

    1)全局配置文件:      

      • /etc/profile
      • /etc/profile.d/*.sh
      • /etc/bashrc

    2)個人配置文件:  

      • ~/.bsah_profile
      • ~/.bashrc

  那么當一個linux用戶在交互式登錄時這些bash配置文件及/etc/motd加載順序:  

1 #交互式登錄,/etc/motd和shell加載配置文件過程
2 /etc/motd -->/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

  登錄式shell加載配置文件過程:如使用su – tom

1 #如命令: su  - tom
2 #登錄式shell加載配置文件過程
3 /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

  非登錄式shell加載配置文件過程:如使用 su tom

1 #如命令: su tom
2 #非登錄式shell加載配置文件過程
3 ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

  但在測試用戶在交互式登錄時bash配置文件及/etc/motd加載順序,出現如下偏差如圖:

  之后查看相關bash配置文件,發現/etc/profile配置文件文中調用/etc/profile.d/*.sh,而用于驗證的echo顯示命令位于配置文件末尾。故產生認知錯誤。

  注:驗證時 最好仔細看一下相關配置文件 并將驗證的echo命令位于配置文件前面位置。否則會可能帶來認知錯誤。

  

  綜述:

    因為/etc/motd只能顯示靜態內容,所以想要實現MOTD動態信息必須通過上述linux用戶登錄時相關bash配置文件,并在相關bash配置文件中添加可執行腳本命令來實現動態信息。例如編寫一個shell腳本文件,并將該腳本在/etc/profile配置文件中執行。

 1 [root@db57 ~]# vim /usr/src/scripts/system_info.sh
 2 #!/bin/bash
 3   
 4 date=`date "+%F %T"`
 5 head="System's date is: $date"
 6   
 7 kernel=`uname -r`
 8 hostname=`echo $HOSTNAME`
 9 
10 echo
11 echo "++++++++++++++++++++++++++"
12 echo "$head"
13 echo "--------------------------"
14 printf "Kernel :\t%s\n" $kernel
15 printf "HostName:\t%s\n" $hostname
16 
17 [root@db57 ~]#chmod +x /usr/src/scripts/system_info.sh
18 [root@db57 ~]#tail -1 /etc/profile
19 /usr/src/scripts/system_info.sh

注1:在實現動態信息中除了使用shell腳本外,也可以使用python腳本。

注2:摘自《Linux服務器安全策略配置-SSH與動態MOTD(一)》https://yq.aliyun.com/articles/560280

    如果你使用過Debian/Ubuntu分發版,你可能已經發現,Ubuntu默認就已經有一個動態的MOTD信息提示(通過SSH或本地登錄時顯示系統當前的一些信息)。在RHEL/CentOS中不可能實現像在Debian/Ubuntu中這樣的功能,因為RHEL/CentOS并沒有提供與之相關的任何腳本。我們可以通過環境變量文件,如/etc/profile、/etc/bashrc等,將需要執行的命令或腳本添加到這些文件末尾,這樣當每次用戶登陸時,系統就會讀取這些文件,執行文件里定義好的腳本。除此之外,也可以結合使用crontab計劃任務,將預先準備好的腳本,如系統監控,異常信息收集通過crontab在后臺定期執行,并把收集到的信息重定向寫到/etc/motd文件中。在用戶登錄系統時,就可以顯示這些系統監控、異常處理信息了。

    在Ubuntu中,提供了一組腳本在目錄/etc/update-motd.d/中,在用戶登錄時,按照腳本名字前綴的數字(00-99)順序執行,并將這些腳本的輸出保存到文件/run/motd.dynamic中,最終用戶成功登錄后,在登錄的屏幕界面中打印出來。

小結:

/etc/motd文件可實現靜態MOTD內容;動態MOTD需通過腳本在linux用戶登錄的bash配置文件執行,Ubuntu中提供了/etc/update-motd.d/目錄來實現動態MOTD。

引出問題:

1)xterm虛擬終端,及顏色內容顯示

2)linux用戶的交互式登錄;登錄式shell和非登錄式shell

3)printf命令

參考:

http://ju.outofmemory.cn/entry/139743

https://blog.51cto.com/7424593/1922111

https://www.linuxjournal.com/article/8603

https://www.cnblogs.com/justart/p/7688624.html

https://segmentfault.com/a/1190000015684318

https://blog.csdn.net/dreams_deng/article/details/77196444

https://yq.aliyun.com/articles/560280

總結

以上是生活随笔為你收集整理的Linux中创建自己的MOTD[通俗易懂](Download)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。