Linux中创建自己的MOTD[通俗易懂](Download)
1)什么是MOTD
motd:是英文縮寫message of the day 。譯文是:每日提示信息,問候報文。那你為什么要用MOTD?其實目的很簡單,是提示進入系統(tǒng)的用戶注意事項,或提示系統(tǒng)運行的概要信息讓用戶更好的了解系統(tǒng)。在Linux系統(tǒng)要實現(xiàn)自己的MOTD,首先需要認識/etc/motd文件。
- /etc/motd文件是什么?
在linux世界中“一切皆文件”,/etc/motd也是眾多文件之一;那它有什么特別之處?/etc/motd文件作用是:每次系統(tǒng)登陸時,通過終端展示一些消息給登陸用戶,如向用戶提示歡迎信息,或提示使用系統(tǒng)的注意事項等等信息像公告板一樣為所有用戶提示信息。然而在/etc/motd文件只能添加靜態(tài)信息,而如果你想在用戶登錄時對提供動態(tài)的系統(tǒng)信息,如IP地址、系統(tǒng)負載等時,/etc/motd就無能為力了。但在/etc/motd顯示靜態(tài)信息內(nèi)容時,可以對靜態(tài)文字增加顏色,以達到對重點信息內(nèi)容的突出顯示。
此外,作為ssh訪問系統(tǒng)用戶必須配置/etc/ssh/sshd_config文件。
1 vim /etc/ssh/sshd_config 2 …… 3 PrintMotd yes #遠程用戶登錄時是否打印/etc/motd文件信息 4 ……
2)如何顯示靜態(tài)MOTD
如果想在用戶登陸時顯示靜態(tài)內(nèi)容信息,只需要修改/etc/motd文件。同時還可在/etc/motd文件中還可以添加顏色及背景色,讓原本靜態(tài)內(nèi)容更加生動更具提示效果。要想實現(xiàn)上述效果,必須在靜態(tài)信息內(nèi)容前加上<ESC>[{attr};{fg};{bg}m 來提示xterm虛擬終端怎樣來顯示內(nèi)容。
- 顯示虛擬終端類型
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) :恢復(fù)通用模式
- 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)如何顯示動態(tài)MOTD
靜態(tài)內(nèi)容在提示公共信息上有效,但當(dāng)用戶登錄系統(tǒng)時更多是需要了解系統(tǒng)運行狀態(tài)及一些系統(tǒng)信息。自然就需要顯示動態(tài)的信息內(nèi)容。比如ip地址、硬盤占用、進程數(shù)等。那么怎么來實現(xiàn)上述動態(tài)的內(nèi)容?那么首先看看linux用戶登錄及加載bash配置文件過程:
用戶登錄時相關(guān)bash配置文件:
1)全局配置文件:
-
-
- /etc/profile
- /etc/profile.d/*.sh
- /etc/bashrc
-
2)個人配置文件:
-
-
- ~/.bsah_profile
- ~/.bashrc
-
那么當(dāng)一個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加載順序,出現(xiàn)如下偏差如圖:
之后查看相關(guān)bash配置文件,發(fā)現(xiàn)/etc/profile配置文件文中調(diào)用/etc/profile.d/*.sh,而用于驗證的echo顯示命令位于配置文件末尾。故產(chǎn)生認知錯誤。
注:驗證時 最好仔細看一下相關(guān)配置文件 并將驗證的echo命令位于配置文件前面位置。否則會可能帶來認知錯誤。
綜述:
因為/etc/motd只能顯示靜態(tài)內(nèi)容,所以想要實現(xiàn)MOTD動態(tài)信息必須通過上述linux用戶登錄時相關(guān)bash配置文件,并在相關(guān)bash配置文件中添加可執(zhí)行腳本命令來實現(xiàn)動態(tài)信息。例如編寫一個shell腳本文件,并將該腳本在/etc/profile配置文件中執(zhí)行。
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:在實現(xiàn)動態(tài)信息中除了使用shell腳本外,也可以使用python腳本。
注2:摘自《Linux服務(wù)器安全策略配置-SSH與動態(tài)MOTD(一)》https://yq.aliyun.com/articles/560280
如果你使用過Debian/Ubuntu分發(fā)版,你可能已經(jīng)發(fā)現(xiàn),Ubuntu默認就已經(jīng)有一個動態(tài)的MOTD信息提示(通過SSH或本地登錄時顯示系統(tǒng)當(dāng)前的一些信息)。在RHEL/CentOS中不可能實現(xiàn)像在Debian/Ubuntu中這樣的功能,因為RHEL/CentOS并沒有提供與之相關(guān)的任何腳本。我們可以通過環(huán)境變量文件,如/etc/profile、/etc/bashrc等,將需要執(zhí)行的命令或腳本添加到這些文件末尾,這樣當(dāng)每次用戶登陸時,系統(tǒng)就會讀取這些文件,執(zhí)行文件里定義好的腳本。除此之外,也可以結(jié)合使用crontab計劃任務(wù),將預(yù)先準備好的腳本,如系統(tǒng)監(jiān)控,異常信息收集通過crontab在后臺定期執(zhí)行,并把收集到的信息重定向?qū)懙?etc/motd文件中。在用戶登錄系統(tǒng)時,就可以顯示這些系統(tǒng)監(jiān)控、異常處理信息了。
在Ubuntu中,提供了一組腳本在目錄/etc/update-motd.d/中,在用戶登錄時,按照腳本名字前綴的數(shù)字(00-99)順序執(zhí)行,并將這些腳本的輸出保存到文件/run/motd.dynamic中,最終用戶成功登錄后,在登錄的屏幕界面中打印出來。
小結(jié):
/etc/motd文件可實現(xiàn)靜態(tài)MOTD內(nèi)容;動態(tài)MOTD需通過腳本在linux用戶登錄的bash配置文件執(zhí)行,Ubuntu中提供了/etc/update-motd.d/目錄來實現(xiàn)動態(tài)MOTD。
引出問題:
1)xterm虛擬終端,及顏色內(nèi)容顯示
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
總結(jié)
以上是生活随笔為你收集整理的Linux中创建自己的MOTD[通俗易懂](Download)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何找到SAP S4销售订单的字段tko
- 下一篇: cmd ping大包命令_cmd中pin