• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    【瞎折腾日常】linux登录自动检查脚本

    :2024年06月13日
    零氪的云原生

    一、自动检查脚本每次登录linux都想看一下系统的一些信息以及cpu和内存,但是不想手敲。整理了一份登录检查清单脚本,涵盖了系统的基础信息、内存、cpu、网络、docker等等的信息。只需要在/etc/profile....

    一、自动检查脚本

    1. 每次登录linux都想看一下系统的一些信息以及cpu和内存,但是不想手敲。整理了一份登录检查清单脚本,涵盖了系统的基础信息、内存、cpu、网络、docker等等的信息。

    2. 只需要在/etc/profile.d/创建这个脚本,粘贴下面的脚本内容;

    3. vim /etc/profile.d/autosearchinfo.sh

    4. 然后赋予脚本的执行权限即可。每次登录就可以自动检查信息了。

    5. chmod +x /etc/profile.d/autosearchinfo.sh

    6. ps:内存使用率是使用bc命令计算的,bc命令先装。


    二、脚本测试环境

    1. 1.测试环境信息

    2. A.项目映射在华为云centos8.2,外网地址为124.71.67.131,实际搭建在我的minipc,通过内网穿透映射到华为云进行访问

    3. Linux hcss-ecs-031b4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

    4. B.docker版本为26.1.3docker-compose版本为26.1.3

    5. 注意:本次实践部署环境为个人的测试环境,若是生产环境请谨慎部署;对应开启了容器的端口,在linux下和防火墙下需开放对应端口。

    6. 2.本次项目实施过程

    7. 在/etc/profile.d/路径下创建autosearchinfo.sh脚本,赋予执行权限。

    8. 由于我这边是一个云服务器,一个是内网穿透的服务器,我这边两边都增加了对应的脚本。


    三、脚本内容

    1. #!/bin/bash

    2. clear

    3. LogFileName=polling.$(date +%F-%T)

    4. EchoFormat=$(for(( i=0;i<30;i++));do echo -n "=";done)

    5. # 系统信息

    6. SystemInfo(){

    7. printf "${EchoFormat} 系统信息 ${EchoFormat}\n"

    8. printf "系统类型: %-10s\n" $(uname -a| awk '{print $NF}')

    9.    printf "系统版本: %-10s\n""$(cat /etc/redhat-release)"

    10. printf "内核信息: %-10s\n" $(uname -r)

    11.    printf "主机名: %-10s\n" $(uname -n)

    12. printf "编码格式: %-10s\n" ${LANG}

    13.    printf "系统当前时间: %-10s %-10s\n" $(date +%F) $(date +%T)

    14.    printf "系统运行负载: %-4s %-1s\n" $(uptime | awk -F:'{print $5 }'|awk -F,'{print $1,"%"}')

    15.    printf "系统运行天数: %-10s\n" $(uptime |awk '{print $3}')

    16.    printf "在线用户人数: %-3s\n" $(w|tail -n +3|wc -l)

    17. printf "SELinux: %-10s\n" $(grep "SELINUX=[d|e|p]"/etc/selinux/config |awk -F='{print $2}')

    18.    echo -e "最后一次修改时间: $(uptime -p)"

    19. echo -e "IP地址: $(hostname -I | cut -d' ' -f1)"

    20.    echo -e "Cpu处理器: $(lscpu | grep "Model name:" | sed 's/Model name:\s*//')"

    21. echo -e "内存空间: $(free -h | awk '/^Mem:/ { print $3 "/" $2 }')"

    22.    echo -e "交换空间: $(free -h | awk '/^Swap:/ { print $3 "/" $2 }')"

    23. }

    24. # CPU信息

    25. CpuInfo(){

    26. MemonyId=$(top -b -n1|awk 'NR==3'|awk -F,'{print $4}'| cut -c 1-5)

    27. MemonyUse=$(echo "100-${MemonyId}"|bc)

    28.    printf "${EchoFormat} CPU信息 ${EchoFormat}\n"

    29.    printf "逻辑CPU核数: %-3s\n" $(grep "processor"/proc/cpuinfo|sort -u|wc -l)

    30. printf "物理CPU核数: %-3s\n" $(grep "physical id"/proc/cpuinfo |sort -u|wc -l)

    31.    printf "CPU架构: %-3s\n" $(uname -m)

    32. printf "CPU设置型号: %-3s\n""$(grep "model name" /proc/cpuinfo |awk -F: '{print $2}'|sort -u|cut -c 2-50)"

    33.    echo -e "CPU 1分钟负载: `awk  '{printf "%15s",$1}' /proc/loadavg`"

    34.    echo -e "CPU 5分钟负载: `awk  '{printf "%15s",$2}' /proc/loadavg`"

    35.    echo -e "CPU10分钟负载: `awk  '{printf "%15s",$3}' /proc/loadavg`"

    36.    printf "使用CPU占比: %-1s %-1s\n" ${MemonyUse}%

    37. printf "空闲CPU占比: %-1s %-1s\n" ${MemonyId}%

    38. printf "占用CPU Top10信息:\n\n"

    39. ps -eo user,pid,pcpu,pmem,args --sort=-pcpu  |head -n 10

    40. }

    41. # Memory信息

    42. MemoryInfo(){

    43. printf "${EchoFormat} 内存信息 ${EchoFormat}\n"

    44. printf "总共内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $2}')

    45.    printf "使用内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $3}')

    46.    printf "剩余内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $4}')

    47.    printf "内存使用占比: %-1s %-1s\n" $(free | grep -i mem |awk '{print $6/$2*100}'|cut -c1-5)%

    48. printf "占用内存排名前10的soft:\n\n"

    49. ps -eo user,pid,pcpu,pmem,args --sort=-pmem  |head -n 10

    50. }

    51. # 磁盘使用量排序:

    52. Disk_Info(){

    53. printf "${EchoFormat} 各分区使用率 ${EchoFormat}\n"

    54. df -h

    55. echo

    56. }

    57. # Swap信息

    58. SwapInfo(){

    59. printf "${EchoFormat} Swap信息 ${EchoFormat}\n"

    60. printf "Swap总大小: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $2}')

    61.    printf "已用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $3}')

    62.    printf "可用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $4}')

    63. }

    64. # 网络信息

    65. NetworkInfo(){

    66. printf "${EchoFormat} 网络信息 ${EchoFormat}\n"

    67. printf "IP地址: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")

    68.    printf "网关: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep "netmask"|grep -v 127.0.0.1|awk '{print $4}')

    69.    printf "DNS: %-1s %-1s %-1s %-1s %-1s\n" $(grep "nameserver"/etc/resolv.conf | awk '{print $2}')

    70. if(ping -c2 -w2 www.baidu.com &>/dev/null);then

    71.    printf "网络是否连通: %s\n"

    72. else

    73.    printf "网络是否连通: %s\n"

    74. fi

    75. }

    76. # docker检查

    77. DockerInfo(){

    78.    printf "${EchoFormat} docker运行情况 ${EchoFormat}\n"

    79.    printf "当前正在运行的容器:\n $(docker ps --format "{{.Names}}")\n"

    80.        printf "当前没有运行的容器:\n $(docker ps --format "{{.Names}}"|grep Exited)\n"

    81. }

    82. #直接登录后打印

    83. SystemInfo

    84. CpuInfo

    85. MemoryInfo

    86. Disk_Info

    87. SwapInfo

    88. NetworkInfo

    89. #登录后进入查看模式

    90. # All(){

    91. # SystemInfo

    92. # CpuInfo

    93. # MemoryInfo

    94. # Disk_Info

    95. # SwapInfo

    96. # NetworkInfo

    97. # }

    98. # All >${LogFileName};less ${LogFileName}

    640.jpg

    640(1).jpg

    [编辑:宋聪乔 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: 自动 检查 脚本 每次 登录
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证