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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何找到SAP S4销售订单的字段tko
- 下一篇: Run service in speci