Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息

Linux 中有很多可以查看系统信息如处理器信息、生产商名字、序列号等的命令。你可能需要执行多个命令来收集这些信息。同时,记住所有的命令和他们的选项也是有难度。

你可以写一个 shell 脚本 基于你的需求来自定义显示的信息。

以前我们出于不同的目的需要写很多个 bash 脚本。

现在我们写一个新的 shell 脚本,在每次登录到 shell 时显示需要的系统信息。

这个j脚本有 6 部分,细节如下:

  1. 通用系统信息
  2. CPU/内存当前使用情况
  3. 硬盘使用率超过 80%
  4. 列出系统 WWN 详情
  5. Oracle DB 实例
  6. 可更新的包

我们已经基于我们的需求把可能需要到的信息加到了每个部分。之后你可以基于自己的意愿修改这个脚本。

这个j脚本需要用到很多工具,其中大部分我们之前已经涉及到了。

下面重点给大家介绍Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息,具体内容如下所示:

这个脚本会在你每次登录 shell 时把系统信息打印到 terminal。

# vi /opt/scripts/system-info.sh
#!/bin/bash
echo -e "-------------------------------System Information----------------------------"
echo -e "Hostname:\t\t"`hostname`
echo -e "uptime:\t\t\t"`uptime | awk '{print $3,$4}' | sed 's/,//'`
echo -e "Manufacturer:\t\t"`cat /sys/class/dmi/id/chassis_vendor`
echo -e "Product Name:\t\t"`cat /sys/class/dmi/id/product_name`
echo -e "Version:\t\t"`cat /sys/class/dmi/id/product_version`
echo -e "Serial Number:\t\t"`cat /sys/class/dmi/id/product_serial`
echo -e "Machine Type:\t\t"`vserver=$(lscpu | grep Hypervisor | wc -l); if [ $vserver -gt 0 ]; then echo "VM"; else echo "Physical"; fi`
echo -e "Operating System:\t"`hostnamectl | grep "Operating System" | cut -d ' ' -f5-`
echo -e "Kernel:\t\t\t"`uname -r`
echo -e "Architecture:\t\t"`arch`
echo -e "Processor Name:\t\t"`awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'`
echo -e "Active User:\t\t"`w | cut -d ' ' -f1 | grep -v USER | xargs -n1`
echo -e "System Main IP:\t\t"`hostname -I`
echo ""
echo -e "-------------------------------CPU/Memory Usage------------------------------"
echo -e "Memory Usage:\t"`free | awk '/Mem/{printf("%.2f%"), $3/$2*100}'`
echo -e "Swap Usage:\t"`free | awk '/Swap/{printf("%.2f%"), $3/$2*100}'`
echo -e "CPU Usage:\t"`cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' | awk '{print $0}' | head -1`
echo ""
echo -e "-------------------------------Disk Usage >80%-------------------------------"
df -Ph | sed s/%//g | awk '{ if($5 > 80) print $0;}'
echo ""
echo -e "-------------------------------For WWN Details-------------------------------"
vserver=$(lscpu | grep Hypervisor | wc -l)
if [ $vserver -gt 0 ]
then
echo "$(hostname) is a VM"
else
cat /sys/class/fc_host/host?/port_name
fi
echo ""
echo -e "-------------------------------Oracle DB Instances---------------------------"
if id oracle >/dev/null 2>&1; then
/bin/ps -ef|grep pmon
then
else
echo "oracle user does not exist on $(hostname)"
fi
echo ""
if (( $(cat /etc/*-release | grep -w "Oracle|Red Hat|CentOS|Fedora" | wc -l) > 0 ))
then
echo -e "-------------------------------Package Updates-------------------------------"
yum updateinfo summary | grep 'Security|Bugfix|Enhancement'
echo -e "-----------------------------------------------------------------------------"
else
echo -e "-------------------------------Package Updates-------------------------------"
cat /var/lib/update-notifier/updates-available
echo -e "-----------------------------------------------------------------------------"
fi

把上面脚本内容保存到一个文件 system-info.sh,之后添加可执行权限:

# chmod +x ~root/system-info.sh

当脚本准备好后,把脚本文件的路径加到 .bash_profile 文件末尾(红帽系列的系统:CentOS、Oracle Linux 和 Fedora):

# echo "/root/system-info.sh" >> ~root/.bash_profile

执行以下命令,来让修改的内容生效:

# source ~root/.bash_profile

对于 Debian 系统的系统,你可能需要把文件路径加到 .profile 文件中:

# echo "/root/system-info.sh" >> ~root/.profile

运行以下命令使修改生效:

# source ~root/.profile

你以前运行上面 source 命令时可能见过类似下面的输出。从下次开始,你在每次登录 shell 时会看到这些信息。当然,如果有必要你也可以随时手动执行这个脚本。

-------------------------------System Information---------------------------
Hostname:      daygeek-Y700
uptime:       1:20 1
Manufacturer:    LENOVO
Product Name:    80NV
Version:       Lenovo ideapad Y700-15ISK
Serial Number:    AA0CMRN1
Machine Type:    Physical
Operating System:  Manjaro Linux
Kernel:       4.19.80-1-MANJARO
Architecture:    x86_64
Processor Name:   Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Active User:     daygeek renu thanu
System Main IP:   192.168.1.6 192.168.122.1
-------------------------------CPU/Memory Usage------------------------------
Memory Usage:   37.28%
Swap Usage:    0.00%
CPU Usage:    15.43%
-------------------------------Disk Usage >80%-------------------------------
Filesystem   Size Used Avail Use Mounted on
/dev/nvme0n1p1 217G 202G 4.6G 98 /
/dev/loop0   109M 109M   0 100 /var/lib/snapd/snap/odrive-unofficial/2
/dev/loop1    91M  91M   0 100 /var/lib/snapd/snap/core/6405
/dev/loop2    90M  90M   0 100 /var/lib/snapd/snap/core/7713
-------------------------------For WWN Details-------------------------------
CentOS8.2daygeek.com is a VM
-------------------------------Oracle DB Instances---------------------------
oracle user does not exist on CentOS8.2daygeek.com
-------------------------------Package Updates-------------------------------
  13 Security notice(s)
     9 Important Security notice(s)
     3 Moderate Security notice(s)
     1 Low Security notice(s)
  35 Bugfix notice(s)
   1 Enhancement notice(s)
-----------------------------------------------------------------------------

总结

以上所述是小编给大家介绍的Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • 使用 Python 获取 Linux 系统信息的代码

    哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份解释不同之处的备选代码.请确保你已经安装了CPython,在终端上输入python或者python3回车,然后你在终端上应该能看到python的提示符(prompt). 请注意,所有的程序在它们第一行都是#!/usr/bin/env/python,也就是说,我们想要Python的解释器来执行这些脚本.因此,如果你想你的脚

  • Linux启动jar包的shell脚本

    背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件中,实现操作shell脚本启动jar包程序的功能. 编写的socdev.sh脚本文件中命令如下: #启动命令所在目录 HOME='/home/pi/Desktop/java' #获取mac地址(唯一的) mac=`ifconfig | grep eth0 | awk '{print $5}'` st

  • linux shell中if的各种判断

    shell编程中使用到得if语句内判断参数 –b当file存在并且是块文件时返回真 -c当file存在并且是字符文件时返回真 -d当pathname存在并且是一个目录时返回真 -e当pathname指定的文件或目录存在时返回真 -f当file存在并且是正规文件时返回真 -g当由pathname指定的文件或目录存在并且设置了SGID位时返回为真 -h当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效 -k当由pathname指定的文件或目录存在并且设置了"粘滞"位时返回真

  • linux shell 中数组的定义和for循环遍历的方法

    linux shell中的语法和普通编程语言 c/c++ java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用. 今天突然被问到数组怎么去遍历.平时写shell脚本也经常遍历数组,但是一下没答上来,被鄙视了. 所以平时学习还是好好总结吧,不能每次都问度娘谷爷.IT 知识体系较为庞大,细节的东西也太多,平时遇到问题应该的多总结记笔记. linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开.数组的下标从0开始. 1 获

  • Linux中shell脚本获取当前工作目录的方法

    如下: workdir=$(cd $(dirname $0); pwd) 步骤1 dirname $0,取得当前执行的脚本文件的父目录 步骤2 cd到父目录,即进入当前工作目录 步骤3 pwd显示当前工作目录 以上这篇Linux中shell脚本获取当前工作目录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Linux shell脚本的建立与执行

    在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以省去了敲击键盘的时间.于是在网上搜了一些有关Linux下脚本编程的内容. Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性.可维护性和便携性比效率更重要的任务. 用户可以使用任何文本编辑器编辑shel

  • Linux Shell获取文件夹下的文件名方法

    有时候需要获取某个文件夹下的所有文件名,可以用程序实现,但是打开IDE,编译运行太麻烦,在Linux服务器中通常不能打开IDE,此时可以用几行简单的shell命令来实现,结果保存到某个文件中即可. Shell脚本如下: #!/bin/bash # get all filename in specified path path=$1 files=$(ls $path) for filename in $files do echo $filename >> filename.txt done 以上

  • Linux系统信息查看常用命令

    系统 # uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo      # 查看CPU信息# hostname               # 查看计算机名# lspci -tv              # 列出所有PCI设备# lsusb -tv              # 列出所有USB设备# lsmod                  # 列出加载

  • Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息

    Linux 中有很多可以查看系统信息如处理器信息.生产商名字.序列号等的命令.你可能需要执行多个命令来收集这些信息.同时,记住所有的命令和他们的选项也是有难度. 你可以写一个 shell 脚本 基于你的需求来自定义显示的信息. 以前我们出于不同的目的需要写很多个 bash 脚本. 现在我们写一个新的 shell 脚本,在每次登录到 shell 时显示需要的系统信息. 这个j脚本有 6 部分,细节如下: 通用系统信息 CPU/内存当前使用情况 硬盘使用率超过 80% 列出系统 WWN 详情 Ora

  • nodejs编写bash脚本的终极方案分享

    目录 前言 zx库 $`command` cd() fetch() question() sleep() nothrow() chalk fs os $.shell $.quote 传递环境变量 传递数组 总结 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的.举个例子: #!/bin/bash # 这里是判断变量var是否等于字符串abc,但是var这个变量

  • python 捕获 shell/bash 脚本的输出结果实例

    #!/usr/bin/python ## get subprocess module import subprocess   ## call date command ## p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True)   ## Talk with date command i.e. read data from stdout and stderr. Store this info in tuple #

  • 处理Shell脚本中带有空格的变量(bash脚本)

    本篇主要介绍bash脚本中对于含空格文件处理方式. 在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不能被处理: #$1: 遍历的文件夹 rootDir=$1 cd $rootDir allAudioFile=$(find $1 -name "*\.mp3") for oneAudioFile in $allAudioFile do mv -f $oneAudioFile $rootDir done 通过set -x将执行信息打印出来,发现可以执行到,但是执行过程提示找不到对

  • 如何编写健壮的Bash脚本(经验分享)

    shell脚本在运行异常时会受到非常大的影响. 本文介绍一些让bash脚本变得健壮的技术. 使用set -u 因为没有对变量初始化而使脚本崩溃过多少次?对于我来说,很多次.chroot=$1...rm -rf $chroot/usr/share/doc如果上面的代码没有给参数就运行,不会仅仅删除掉chroot中的文档,而是将系统的所有文档都删除.那应该做些什么呢?好在bash提供了set -u,当使用未初始化的变量时,让bash自动退出. 也可以使用可读性更强一点的set -o nounset.

  • 如何写出安全的、基本功能完善的Bash脚本

    每个人或多或少总会碰到要使用并且自己完成编写一个最基础的Bash脚本的情况.真实情况是,没有人会说"哇哦,我喜欢写这些脚本".所以这也是为什么很少有人在写的时候专注在这些脚本上. 我本身也不是一个Bash脚本专家,但是我会在本文中跟你展示一个最基础最简单的安全脚本模板,会让你写的Bash脚本更加安全实用,你掌握了之后肯定会受益匪浅. 为什么要写Bash脚本 其实关于Bash脚本最好的解释如下: The opposite of "it's like riding a bike&

  • 脚本实现SSH登录邮件报警

    登录保护是一个非常重要的环节,下面通过图文并茂的方式给大家详细讲解下: 前两天@cyy 给我发了一个图 然后我就想到USHQ的ssh登录app通知功能,然后就像如果把这个部署到自用的服务器就好了.至少多一层安全系数. 首先要感谢@Legion 帮忙搞定了几个错误以及搞定了Geo2IP的JSON转换. (P.S.此人为自动化运维大神级人物,现任职于德国一数据统计企业.) 当然,我和他相比我就是战五渣了...大家一定要多向 @Legion 学习啊~~ 说下需要做的准备: sendmail或者Post

  • linux Bash脚本判别使用者的身份方法示例

    经常要在bash脚本里面或者直接对脚本本身加上sudo运行命令,但是这引发了一系列的问题. 比如用sudo的时候,脚本里的~或$HOME指代用户文件夹的这个变量,到底是应该指向我真正的用户文件夹如/home/pi呢,还是指向了超级管理员的用户文件夹/root/呢? 实际上它指向了/root/文件夹,这是我们绝对不想要的.但是很多命令如安装个程序,都不得不用sudo,那怎么办? 首先要说下经验:命令行的权限执行,从表现上来看,可以分为以下5种情况: admin-manual: 普通用户手敲命令 s

  • 如何利用Bash脚本监控Linux的内存使用情况

    前言 目前市场上有许多开源监控工具可用于监控 Linux 系统的性能.当系统达到指定的阈值限制时,它可以发送电子邮件警报.它可以监视 CPU 利用率.内存利用率.交换利用率.磁盘空间利用率等所有内容. 如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单. 在本教程中,我们添加了两个 shell 脚本来监视 Linux 系统上的内存利用率.当系统达到给定阈值时,它将给特定电子邮件地址发邮件. 方法-1:用 Linux Bash 脚本监视内存利用率并发

  • 在Bash脚本中引入alias的方法

    alias的使用 在日常开发中,为了提高运维效率,我们会用alias(命令别名)来定义命令的简称.比如在~/.bash_profile中添加: alias ll='ls -lrt --color' alias bdebug="go build -gcflags '-N -l'" alias py3='/usr/bin/python3' 执行source ~/.bash_profile之后,这些alias定义便载入到当前终端环境中,我们可以通过alias <cmd>进行查看

随机推荐