Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息
Linux中有很多可以查看系统信息如处理器信息、生产商名字、序列号等的命令。你可能需要执行多个命令来收集这些信息。同时,记住所有的命令和他们的选项也是有难度。
你可以写一个shell脚本基于你的需求来自定义显示的信息。
以前我们出于不同的目的需要写很多个bash脚本。
现在我们写一个新的shell脚本,在每次登录到shell时显示需要的系统信息。
这个j脚本有6部分,细节如下:
- 通用系统信息
- CPU/内存当前使用情况
- 硬盘使用率超过80%
- 列出系统WWN详情
- OracleDB实例
- 可更新的包
我们已经基于我们的需求把可能需要到的信息加到了每个部分。之后你可以基于自己的意愿修改这个脚本。
这个j脚本需要用到很多工具,其中大部分我们之前已经涉及到了。
下面重点给大家介绍Bash脚本实现每次登录到Shell时可以查看Linux系统信息,具体内容如下所示:
这个脚本会在你每次登录shell时把系统信息打印到terminal。
#vi/opt/scripts/system-info.sh #!/bin/bash echo-e"-------------------------------SystemInformation----------------------------" 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"ProductName:\t\t"`cat/sys/class/dmi/id/product_name` echo-e"Version:\t\t"`cat/sys/class/dmi/id/product_version` echo-e"SerialNumber:\t\t"`cat/sys/class/dmi/id/product_serial` echo-e"MachineType:\t\t"`vserver=$(lscpu|grepHypervisor|wc-l);if[$vserver-gt0];thenecho"VM";elseecho"Physical";fi` echo-e"OperatingSystem:\t"`hostnamectl|grep"OperatingSystem"|cut-d''-f5-` echo-e"Kernel:\t\t\t"`uname-r` echo-e"Architecture:\t\t"`arch` echo-e"ProcessorName:\t\t"`awk-F':''/^modelname/{print$2}'/proc/cpuinfo|uniq|sed-e's/^[\t]*//'` echo-e"ActiveUser:\t\t"`w|cut-d''-f1|grep-vUSER|xargs-n1` echo-e"SystemMainIP:\t\t"`hostname-I` echo"" echo-e"-------------------------------CPU/MemoryUsage------------------------------" echo-e"MemoryUsage:\t"`free|awk'/Mem/{printf("%.2f%"),$3/$2*100}'` echo-e"SwapUsage:\t"`free|awk'/Swap/{printf("%.2f%"),$3/$2*100}'` echo-e"CPUUsage:\t"`cat/proc/stat|awk'/cpu/{printf("%.2f%\n"),($2+$4)*100/($2+$4+$5)}'|awk'{print$0}'|head-1` echo"" echo-e"-------------------------------DiskUsage>80%-------------------------------" df-Ph|seds/%//g|awk'{if($5>80)print$0;}' echo"" echo-e"-------------------------------ForWWNDetails-------------------------------" vserver=$(lscpu|grepHypervisor|wc-l) if[$vserver-gt0] then echo"$(hostname)isaVM" else cat/sys/class/fc_host/host?/port_name fi echo"" echo-e"-------------------------------OracleDBInstances---------------------------" ifidoracle>/dev/null2>&1;then /bin/ps-ef|greppmon then else echo"oracleuserdoesnotexiston$(hostname)" fi echo"" if(($(cat/etc/*-release|grep-w"Oracle|RedHat|CentOS|Fedora"|wc-l)>0)) then echo-e"-------------------------------PackageUpdates-------------------------------" yumupdateinfosummary|grep'Security|Bugfix|Enhancement' echo-e"-----------------------------------------------------------------------------" else echo-e"-------------------------------PackageUpdates-------------------------------" cat/var/lib/update-notifier/updates-available echo-e"-----------------------------------------------------------------------------" fi
把上面脚本内容保存到一个文件system-info.sh,之后添加可执行权限:
#chmod+x~root/system-info.sh
当脚本准备好后,把脚本文件的路径加到.bash_profile文件末尾(红帽系列的系统:CentOS、OracleLinux和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时会看到这些信息。当然,如果有必要你也可以随时手动执行这个脚本。
-------------------------------SystemInformation--------------------------- Hostname:daygeek-Y700 uptime:1:201 Manufacturer:LENOVO ProductName:80NV Version:LenovoideapadY700-15ISK SerialNumber:AA0CMRN1 MachineType:Physical OperatingSystem:ManjaroLinux Kernel:4.19.80-1-MANJARO Architecture:x86_64 ProcessorName:Intel(R)Core(TM)i7-6700HQCPU@2.60GHz ActiveUser:daygeekrenuthanu SystemMainIP:192.168.1.6192.168.122.1 -------------------------------CPU/MemoryUsage------------------------------ MemoryUsage:37.28% SwapUsage:0.00% CPUUsage:15.43% -------------------------------DiskUsage>80%------------------------------- FilesystemSizeUsedAvailUseMountedon /dev/nvme0n1p1217G202G4.6G98/ /dev/loop0109M109M0100/var/lib/snapd/snap/odrive-unofficial/2 /dev/loop191M91M0100/var/lib/snapd/snap/core/6405 /dev/loop290M90M0100/var/lib/snapd/snap/core/7713 -------------------------------ForWWNDetails------------------------------- CentOS8.2daygeek.comisaVM -------------------------------OracleDBInstances--------------------------- oracleuserdoesnotexistonCentOS8.2daygeek.com -------------------------------PackageUpdates------------------------------- 13Securitynotice(s) 9ImportantSecuritynotice(s) 3ModerateSecuritynotice(s) 1LowSecuritynotice(s) 35Bugfixnotice(s) 1Enhancementnotice(s) -----------------------------------------------------------------------------
总结
以上所述是小编给大家介绍的Bash脚本实现每次登录到Shell时可以查看Linux系统信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。