目标是实现ubuntu\Linux中每开启一个终端,就会自动执行脚本打印系统状态以及注意事项。
1.ssh远程连接的终端,自动执行欢迎脚本
将需要自动执行的脚本放置在相应的路径下就可以,非常简单。
Linux中启动脚本位于/etc/profile.d/
Ubuntu中启动脚本位于/etc/update-motd.d/
放置好文件以后,开启新终端就可以出现欢迎信息了。
可以执行权限确保可以执行。
chmod 755 Welcome.sh
2.桌面系统开启的终端,自动执行欢迎脚本
上述的修改只使用于使用ssh远程连接的终端会执行欢迎脚本,但是如果在服务器本来的桌面系统中打开就不可以。
一般使用服务器桌面系统就是公共账户,所以可以设置该账户每开启一个终端,就自动执行的命令,那么修改~/.bashrc
。
可以就将欢迎脚本放置在用户目录下,文件名前加.
可以隐藏文件。终端可以使用ls -a
展示隐藏文件。
通过vim ~/.bashrc
再文件末尾,增加执行的欢迎脚本的命令
.....
bash ~/.Welcome.sh
然后再 source ~/.bashrc
,再开启新的终端就可以出现欢迎信息了
最后是欢迎脚本的全内容,复制可用
#!/bin/bash
#注意事项
echo "----------------------------------------------------"
echo "Welcome to Cai Lab!"
echo -e "\t \033[31m### 服务器使用注意事项 ###\033[0m"
attention_info="
\t 1. 实验室是我家 \n
\t 2. 维持靠大家 \n
\t 3. ..... \n
#服务使用手册储存路径:/path \n"
echo -e $attention_info
#服务器状态提示
echo "----------------------------------------------------"
#System_info=`cat /etc/redhat-release`
#echo "System Info: " $System_info
#显示服务器信息可以根据情况选用
IP=`uname -n`
echo "IP address:" $IP
vmstat 1 2 | tail -1 | awk '
function draw_bar(percnet, total, fill, color)
{
for(i=0;i<percnet * total;i++)
printf(color fill color_reset)
}
{
color_white = "\033[37m"
color_green = "\033[32m"
color_yellow = "\033[33m"
color_red = "\033[31m"
color_reset = color_white
fill_char = "#"
bar_len = 30
#执行`cat /proc/cpuinfo| grep "processor"| wc -l`获得服务器线程数量
{
cpu_total = 24 #这里需要填入服务器线程数量
cpu_used = $13 + $14
cpu_free = $15
thread_used = cpu_used * cpu_total * 0.01
printf("CPU: %d / %d Thread [", thread_used , cpu_total )
draw_bar(cpu_used / 100, bar_len, fill_char, color_red)
draw_bar(cpu_free / 100, bar_len, fill_char, color_green)
printf(" %.1f%%]\n", cpu_used)
}
}'
#uptime | awk -F "[ ,]" '{printf("CPU Load: %.2f %.2f %.2f\n", $(NF-2), $(NF-1), $(NF))}'
free -k | awk '
function draw_bar(percnet, total, fill, color)
{
for(i=0;i<percnet * total;i++)
printf(color fill color_reset)
}
{
color_white = "\033[37m"
color_green = "\033[32m"
color_yellow = "\033[33m"
color_red = "\033[31m"
color_reset = color_white
fill_char = "#"
bar_len = 30
if(NR==2)
{
mem_total = $2
mem_shard = $5
mem_used = $3 + mem_shard
mem_buffcache = $6
mem_free = $4
mem_available = $7
printf("Memory: %.1f / %.1f Gb [", mem_used / 1024 / 1024, mem_total / 1024 / 1024)
draw_bar(mem_used / mem_total, bar_len, fill_char, color_red)
draw_bar(mem_available / mem_total, bar_len, fill_char, color_green)
printf(" %.1f%%]\n", mem_used * 100 / mem_total)
}
}'
#这里默认是获取根目录内容,如果有需要可以在 df 后面加分区挂载路径
#比如 df /data
df | awk '
function draw_bar(percnet, total, fill, color)
{
for(i=0;i<percnet * total;i++)
printf(color fill color_reset)
}
{
color_white = "\033[37m"
color_green = "\033[32m"
color_yellow = "\033[33m"
color_red = "\033[31m"
color_reset = color_white
fill_char = "#"
bar_len = 30
if($NF=="/") #如果上面选择了指定路径 那么这里的"/"也要换,比如 if($NF=="/data")
{
disk_total = $2
disk_used = $3
disk_available = $4
disk_used_progress = $5
printf("Disk of lab: %.1f / %.1f T [", disk_used / 1024 / 1024 / 1024, disk_total / 1024 / 1024 / 1024)
draw_bar(disk_used / disk_total, bar_len, fill_char, color_red)
draw_bar(disk_available / disk_total, bar_len, fill_char, color_green)
printf(" %s]\n", disk_used_progress)
}
}'
echo "----------------------------------------------------"
成果展示
image.png
参考的工作
https://blog.csdn.net/weixin_30241919/article/details/97487860
https://cloud.tencent.com/developer/beta/article/2206841
网友评论