订制ssh欢迎标语

本文你能够学到

1. ssh登录读取的配置文件

2. date命令的基本用法与计算两个日期间隔的天数的方法。如,计算纪念日等

3. Linux时区的一点小科普

本文适用环境 :

Debian GNU/Linux。

虚拟机是因为刚开始学习Linux虚拟机上手简单,不存在硬件兼容问题,而用ssh登录则方便切换窗口。虚拟系统打开之后关掉虚拟机所有窗口,用PUTTY链接节约内存?!

几天前突发奇想搜索了半天才弄明白的一点东西,最近几天忙别的事情,怕忘记了,趁夜深人静记录于此,鄙人系自学若有不对或者语言不通顺之处请各位大牛斧正。

正文

ssh登录成功后,Linux会打印一段欢迎信息,然后给出一个shell如我的BackBox(基于Ubuntu)是这样的

Welcome to BackBox Linux 4.5 (GNU/Linux 3.19.0-32-generic x86_64)

 * Documentation:  http://www.backbox.org/

 现在是 Thu Apr  7 20:37:03 JST 2016

 亲爱的周肇南先生,你已经离开故土 【909】 天

 归国倒计时【188】天 ご無事に帰国してください 

6 packages can be updated.
0 updates are security updates.

Last login: Wed Mar 30 00:45:48 2016 from 192.168.192.1
Hacker@lxs-BamBoo:~  01 $

其中主要是欢迎信息、内核版本、发行版预留的信息等,而下面要讲的就是中间我添加的那几行。

这是我的机器最后的效果,非常简单,如果你觉得早就懂了,请无视下面的文字,节约时间就是延长生命。

闲话少叙,之前看文章称Linux三大设计思想之一就是一切皆文件,那么ssh登录的文件在什么路径呢?

Hacker@lxs-BamBoo:~  056 $  cd   /etc/update-motd.d/
Hacker@lxs-BamBoo:/etc/update-motd.d  057 $  l
00-header*     10-help-text.backup*   91-release-upgrade*  98-reboot-required*
10-help-text*  90-updates-available*  98-fsck-at-reboot*
Hacker@lxs-BamBoo:/etc/update-motd.d  058 $

我的发行版中是上面这样的

00—header文件主要是开头的一行,

$  cat 00-header
!/bin/sh
printf "Welcome to %s (%s %s %s)\\n" "BackBox Linux 4.5" "$(uname -o)" "$(uname -r)" "$(uname -m)"

主要就是一个uname -o -r -m 命令打印内核版本,$将变量传递给printf命令打印到屏幕上。

开头的第一行是一条注释,也非常的简单。

10-help-text 文件更是只是打印了超链接那一句话。为了美观我选择了添加在这个文件后尾,只需要用cat >> 10 [teb]追加就可以了。或者也可以touch一个名称如:11-help-text的文件。不过需要权限和所有者。这里演示追加文件的方法,一个不明白的地方是
"$ sudo cat >> 10-help-text
提示 权限不够

又由于安全问题BackBox发行版禁用了root,su -c 也不方便,而sudo -i 却可以,只是多一步logout。

Hacker@lxs-BamBoo:/etc/update-motd.d 069 $ sudo -i
[sudo] password for lxs:
root@lxs-BamBoo:~# cat >> /etc/update-motd.d/10-help-text
#test

^C
root@lxs-BamBoo:~# logout
Hacker@lxs-BamBoo:/etc/update-motd.d 070 $

在讲具体添加内容之前先讲一下date命令,

要显示系统日期,只要输入:

$ date
2016年 4月 9日 土曜日 00:42:42 JST

其中JST为日本时区,鄙人离家已久,思乡心切,所以想让ssh登录之后显示一下还有多少时间回国。

$ date +%s

显示当前Unix时间戳,说个题外话 今年2月中旬64位iPhone设置时间为1970年左右会出现白苹果就是因为对于Unix时间戳的储存造成的详情见链接http://www.ifanr.com/620262
显示特定日期的Unix时间戳 date --date="2013/10/12" +%s或者 date -d "2013/10/12" +%s

鄙人的思路是两个时间戳相减除以一天的秒数加一即可。

具体date命令 参见这篇文章https://linux.cn/article-2406-1.html

最后还有一个时区的问题,我的机器上面刚开始登录的时候读取的时区并不是你这个账号的变量。

设置输出时间的时区在date前加TZ指定,

$ TZ=UTC-9 date

仅生效一次。详见http://chenpeng.info/html/3521

下面是我的一个范例,时区的地方并不太理解,所以每个地方都指定了UTC-9,不知道是不是必要的,夜深了有点懵,时区的扩展阅读https://blog.gesha.net/archives/221/

如果使用请按照自己的需要更改

如替换一下文字,将日期更改为一些纪念日等等,或者用作简单的备忘录都是可以的。

printf "\\n 现在是 %s \\n \\n 亲爱的周 肇南先生,你已经离开故土 【%s】 天 \\n \\n 归国倒计时【%s】天 ご無事に帰国してく ださい \\n" "$(TZ=UTC-9 date -d today)" "$((($(TZ=UTC-9 date +%s)-$(TZ=UCT-9 date --date="2013/10/12" +%s))/86400+1))" "$((($(TZ=UTC-9 date -d "2016/10/12" +%s)-$(TZ=UTC-9 date -d today +%s))/86400+1))"

一个简单的例子
echo $((($(date +%s)-$(date -d 2018/2/22 +%s))/86400))

大家晚安

你可能感兴趣的:(订制ssh欢迎标语)