linux bash脚本,检查linux系统的硬件状况和网络情况,并生成可追加纪录的 ...

打印 上一主题 下一主题

主题 623|帖子 623|积分 1869

目次
一、要求
二、脚本介绍
1、脚本内容
2、脚本处置惩罚
(1)脚本说明
(2)脚本命名
(3)执行权限
3、脚本执行
(1)执行命令
(2)执行结果
三、扩展:
1、扩展方向
2、生存为可追加纪录的文件
(1)新的脚本内容
(2)脚本解释
(3)脚本执行         
(4)检查报告


一、要求

        编写一个Linux检查脚本,用于检查系统硬件和网络毗连情况,可以包罗多个方面,如CPU、内存、磁盘、网络接口状态等。
二、脚本介绍

1、脚本内容

        以下是一个linux的bash脚本示例,它涵盖了所有需要的检查点。
  1. #!/bin/bash
  2. # 打印标题
  3. echo "===== 系统巡检报告 ====="
  4. echo "开始时间: $(date)"
  5. # 检查本机CPU信息
  6. echo "----- CPU 信息 -----"
  7. lscpu
  8. # 检查本机内存使用情况
  9. echo "----- 内存使用情况 -----"
  10. free -h
  11. # 检查磁盘使用情况
  12. echo "----- 磁盘使用情况 -----"
  13. df -h
  14. # 检查网络接口状态
  15. echo "----- 网络接口状态 -----"
  16. ip addr show
  17. # 检查网络连接(尝试ping一个外部地址,如Google的DNS服务器)
  18. echo "----- 网络连接测试 (ping vidisit.cn) -----"
  19. ping -c 4 www.vidisit.cn
  20. # 检查系统负载
  21. echo "----- 系统负载 -----"
  22. uptime
  23. # 脚本结束
  24. echo "===== 巡检结束 ====="
  25. echo "结束时间: $(date)"
  26. ~
  27. ~
  28. ~
复制代码

2、脚本处置惩罚

(1)脚本说明

           - 这个脚本利用了几个根本的Linux命令来检查系统状态,可以根据需要调整或添加更多的命令和检查点。
          - ping 命令用于测试网络毗连,这里以 vidisit.cn 为例,可以根据现实需要更改为其他可靠的外部地址。
          - 脚本中的 ip addr show 命令显示网络接口状态,包括IP地址等信息。
          - df -h 和 free -h 分别以易读的格式显示磁盘和内存的利用情况。
          - lscpu 显示CPU架构信息。
          - uptime 显示系统自前次启动以来的运行时间和负载信息。
  (2)脚本命名

        将上述脚本生存到一个文件中,例如命名为 system_check.sh。
(3)执行权限

         赋予该脚本执行权限:chmod +x system_check.sh。
3、脚本执行

(1)执行命令

        利用如下命令执行脚本:
           sh  system_check.sh
  (2)执行结果

        执行结果如下:        
  1. [root@ecs-52a1 quinn]# sh system_check.sh
  2. ===== 系统巡检报告 =====
  3. 开始时间: Fri Jul 26 21:02:34 CST 2024
  4. ----- CPU 信息 -----
  5. Architecture:          x86_64
  6. CPU op-mode(s):        32-bit, 64-bit
  7. Byte Order:            Little Endian
  8. CPU(s):                4
  9. On-line CPU(s) list:   0-3
  10. Thread(s) per core:    2
  11. Core(s) per socket:    2
  12. Socket(s):             1
  13. NUMA node(s):          1
  14. Vendor ID:             GenuineIntel
  15. CPU family:            6
  16. Model:                 85
  17. Model name:            Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
  18. Stepping:              7
  19. CPU MHz:               2600.000
  20. BogoMIPS:              5200.00
  21. Hypervisor vendor:     KVM
  22. Virtualization type:   full
  23. L1d cache:             32K
  24. L1i cache:             32K
  25. L2 cache:              1024K
  26. L3 cache:              36608K
  27. NUMA node0 CPU(s):     0-3
  28. Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
  29. ----- 内存使用情况 -----
  30.               total        used        free      shared  buff/cache   available
  31. Mem:           7.6G        3.7G        1.5G        400M        2.5G        3.3G
  32. Swap:            0B          0B          0B
  33. ----- 磁盘使用情况 -----
  34. Filesystem      Size  Used Avail Use% Mounted on
  35. devtmpfs        3.9G     0  3.9G   0% /dev
  36. tmpfs           3.9G     0  3.9G   0% /dev/shm
  37. tmpfs           3.9G  401M  3.5G  11% /run
  38. tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
  39. /dev/vda1        99G   14G   81G  15% /
  40. tmpfs           783M     0  783M   0% /run/user/0
  41. tmpfs           783M     0  783M   0% /run/user/1001
  42. ----- 网络接口状态 -----
  43. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  44.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  45.     inet 127.0.0.1/8 scope host lo
  46.        valid_lft forever preferred_lft forever
  47.     inet6 ::1/128 scope host
  48.        valid_lft forever preferred_lft forever
  49. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1000
  50.     link/ether fa:16:3e:2f:45:48 brd ff:ff:ff:ff:ff:ff
  51.     inet 192.168.0.138/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
  52.        valid_lft 49414sec preferred_lft 49414sec
  53.     inet6 fe80::f816:3eff:fe2f:4548/64 scope link
  54.        valid_lft forever preferred_lft forever
  55. ----- 网络连接测试 (ping vidisit.cn) -----
  56. PING web.s1267.vhostgo.com (211.149.238.18) 56(84) bytes of data.
  57. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=1 ttl=46 time=38.4 ms
  58. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=2 ttl=46 time=38.2 ms
  59. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=3 ttl=46 time=38.3 ms
  60. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=4 ttl=46 time=38.2 ms
  61. --- web.s1267.vhostgo.com ping statistics ---
  62. 4 packets transmitted, 4 received, 0% packet loss, time 3198ms
  63. rtt min/avg/max/mdev = 38.228/38.330/38.499/0.176 ms
  64. ----- 系统负载 -----
  65. 21:02:38 up 64 days, 32 min,  1 user,  load average: 0.29, 0.22, 0.23
  66. ===== 巡检结束 =====
  67. 结束时间: Fri Jul 26 21:02:38 CST 2024
  68. [root@ecs-52a1 quinn]#
复制代码
        
三、扩展:

1、扩展方向

        可以将脚本的输出重定向到文件中,以便于后续分析和归档:./system_check.sh > system_check_report.txt。
        如果需要定期检查,可以考虑将脚本添加到cron作业中,实现自动化巡检。
        对于更复杂的检查,如服务状态、安全设置等,可能需要编写更详细的脚本或利用现有的监控和审计工具。
2、生存为可追加纪录的文件

生存为一个文件,文件名包罗当前的日期和时间,应该怎样修改脚本?
(1)新的脚本内容

  1. #!/bin/bash
  2. # 生成包含当前日期和时间的文件名
  3. filename="system_check_report_$(date +%Y%m%d_%H%M%S).txt"
  4. # 打印标题
  5. echo "===== 系统巡检报告 =====" | tee "$filename"
  6. echo "开始时间: $(date)" | tee -a "$filename"
  7. # 检查CPU信息
  8. echo "----- CPU 信息 -----" | tee -a "$filename"
  9. lscpu | tee -a "$filename"
  10. # 检查内存使用情况
  11. echo "----- 内存使用情况 -----" | tee -a "$filename"
  12. free -h | tee -a "$filename"
  13. # 检查磁盘使用情况
  14. echo "----- 磁盘使用情况 -----" | tee -a "$filename"
  15. df -h | tee -a "$filename"
  16. # 检查网络接口状态
  17. echo "----- 网络接口状态 -----" | tee -a "$filename"
  18. ip addr show | tee -a "$filename"
  19. # 检查网络连接(尝试ping一个外部地址,如vidisit的DNS服务器)
  20. echo "----- 网络连接测试 (ping  www.vidisit.cn) -----" | tee -a "$filename"
  21. ping -c 4  www.vidisit.cn | tee -a "$filename"
  22. # 检查系统负载
  23. echo "----- 系统负载 -----" | tee -a "$filename"
  24. uptime | tee -a "$filename"
  25. # 脚本结束
  26. echo "===== 巡检结束 =====" | tee -a "$filename"
  27. echo "结束时间: $(date)" | tee -a "$filename"
  28. ~
  29. ~
复制代码

(2)脚本解释

        在这个脚本中,利用了tee命令来同时向标准输出和文件写入内容。-a选项体现追加模式,这样每次执行脚本时,新的输出都会被添加到文件的末端,而不是覆盖旧的内容。
        date +%Y%m%d_%H%M%S用于生成格式为年年年年代月日日_时时分分秒秒的日期时间字符串,这个字符串被用作文件名的一部分。
(3)脚本执行         

        利用如下命令执行脚本:
           sh  system_check_add.sh
          得到如下结果:
  1. [root@ecs-52a1 quinn]# sh system_check_
  2. system_check_add.sh                      system_check_report_20240726_205829.txt  system_check_report_20240726_205926.txt
  3. [root@ecs-52a1 quinn]# sh system_check_add.sh
  4. ===== 系统巡检报告 =====
  5. 开始时间: Fri Jul 26 21:10:21 CST 2024
  6. ----- CPU 信息 -----
  7. Architecture:          x86_64
  8. CPU op-mode(s):        32-bit, 64-bit
  9. Byte Order:            Little Endian
  10. CPU(s):                4
  11. On-line CPU(s) list:   0-3
  12. Thread(s) per core:    2
  13. Core(s) per socket:    2
  14. Socket(s):             1
  15. NUMA node(s):          1
  16. Vendor ID:             GenuineIntel
  17. CPU family:            6
  18. Model:                 85
  19. Model name:            Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
  20. Stepping:              7
  21. CPU MHz:               2600.000
  22. BogoMIPS:              5200.00
  23. Hypervisor vendor:     KVM
  24. Virtualization type:   full
  25. L1d cache:             32K
  26. L1i cache:             32K
  27. L2 cache:              1024K
  28. L3 cache:              36608K
  29. NUMA node0 CPU(s):     0-3
  30. Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512_vnni md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
  31. ----- 内存使用情况 -----
  32.               total        used        free      shared  buff/cache   available
  33. Mem:           7.6G        3.7G        1.5G        400M        2.5G        3.3G
  34. Swap:            0B          0B          0B
  35. ----- 磁盘使用情况 -----
  36. Filesystem      Size  Used Avail Use% Mounted on
  37. devtmpfs        3.9G     0  3.9G   0% /dev
  38. tmpfs           3.9G     0  3.9G   0% /dev/shm
  39. tmpfs           3.9G  401M  3.5G  11% /run
  40. tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
  41. /dev/vda1        99G   14G   81G  15% /
  42. tmpfs           783M     0  783M   0% /run/user/0
  43. tmpfs           783M     0  783M   0% /run/user/1001
  44. ----- 网络接口状态 -----
  45. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  46.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  47.     inet 127.0.0.1/8 scope host lo
  48.        valid_lft forever preferred_lft forever
  49.     inet6 ::1/128 scope host
  50.        valid_lft forever preferred_lft forever
  51. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1000
  52.     link/ether fa:16:3e:2f:45:48 brd ff:ff:ff:ff:ff:ff
  53.     inet 192.168.0.138/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
  54.        valid_lft 86266sec preferred_lft 86266sec
  55.     inet6 fe80::f816:3eff:fe2f:4548/64 scope link
  56.        valid_lft forever preferred_lft forever
  57. ----- 网络连接测试 (ping  www.vidisit.cn) -----
  58. PING web.s1267.vhostgo.com (211.149.238.18) 56(84) bytes of data.
  59. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=1 ttl=46 time=38.3 ms
  60. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=2 ttl=46 time=38.2 ms
  61. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=3 ttl=46 time=38.4 ms
  62. 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=4 ttl=46 time=38.2 ms
  63. --- web.s1267.vhostgo.com ping statistics ---
  64. 4 packets transmitted, 4 received, 0% packet loss, time 5557ms
  65. rtt min/avg/max/mdev = 38.218/38.306/38.419/0.250 ms
  66. ----- 系统负载 -----
  67. 21:10:28 up 64 days, 40 min,  1 user,  load average: 0.13, 0.19, 0.22
  68. ===== 巡检结束 =====
  69. 结束时间: Fri Jul 26 21:10:28 CST 2024
  70. [root@ecs-52a1 quinn]#
  71. [root@ecs-52a1 quinn]#
复制代码

(4)检查报告

       执行这个脚本后,会得到一个以当前日期和时间命名的文件,内里包罗了所有的巡检结果。
        如下图所示:


以上脚本都在linux(centos7)上现实测试的结果。大家可以放心利用。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探究。

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表