目次
一、要求
二、脚本介绍
1、脚本内容
2、脚本处置惩罚
(1)脚本说明
(2)脚本命名
(3)执行权限
3、脚本执行
(1)执行命令
(2)执行结果
三、扩展:
1、扩展方向
2、生存为可追加纪录的文件
(1)新的脚本内容
(2)脚本解释
(3)脚本执行
(4)检查报告
一、要求
编写一个Linux检查脚本,用于检查系统硬件和网络毗连情况,可以包罗多个方面,如CPU、内存、磁盘、网络接口状态等。
二、脚本介绍
1、脚本内容
以下是一个linux的bash脚本示例,它涵盖了所有需要的检查点。
- #!/bin/bash
- # 打印标题
- echo "===== 系统巡检报告 ====="
- echo "开始时间: $(date)"
- # 检查本机CPU信息
- echo "----- CPU 信息 -----"
- lscpu
- # 检查本机内存使用情况
- echo "----- 内存使用情况 -----"
- free -h
- # 检查磁盘使用情况
- echo "----- 磁盘使用情况 -----"
- df -h
- # 检查网络接口状态
- echo "----- 网络接口状态 -----"
- ip addr show
- # 检查网络连接(尝试ping一个外部地址,如Google的DNS服务器)
- echo "----- 网络连接测试 (ping vidisit.cn) -----"
- ping -c 4 www.vidisit.cn
- # 检查系统负载
- echo "----- 系统负载 -----"
- uptime
- # 脚本结束
- echo "===== 巡检结束 ====="
- echo "结束时间: $(date)"
- ~
- ~
- ~
复制代码
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)执行结果
执行结果如下:
- [root@ecs-52a1 quinn]# sh system_check.sh
- ===== 系统巡检报告 =====
- 开始时间: Fri Jul 26 21:02:34 CST 2024
- ----- CPU 信息 -----
- Architecture: x86_64
- CPU op-mode(s): 32-bit, 64-bit
- Byte Order: Little Endian
- CPU(s): 4
- On-line CPU(s) list: 0-3
- Thread(s) per core: 2
- Core(s) per socket: 2
- Socket(s): 1
- NUMA node(s): 1
- Vendor ID: GenuineIntel
- CPU family: 6
- Model: 85
- Model name: Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
- Stepping: 7
- CPU MHz: 2600.000
- BogoMIPS: 5200.00
- Hypervisor vendor: KVM
- Virtualization type: full
- L1d cache: 32K
- L1i cache: 32K
- L2 cache: 1024K
- L3 cache: 36608K
- NUMA node0 CPU(s): 0-3
- 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
- ----- 内存使用情况 -----
- total used free shared buff/cache available
- Mem: 7.6G 3.7G 1.5G 400M 2.5G 3.3G
- Swap: 0B 0B 0B
- ----- 磁盘使用情况 -----
- Filesystem Size Used Avail Use% Mounted on
- devtmpfs 3.9G 0 3.9G 0% /dev
- tmpfs 3.9G 0 3.9G 0% /dev/shm
- tmpfs 3.9G 401M 3.5G 11% /run
- tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
- /dev/vda1 99G 14G 81G 15% /
- tmpfs 783M 0 783M 0% /run/user/0
- tmpfs 783M 0 783M 0% /run/user/1001
- ----- 网络接口状态 -----
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- valid_lft forever preferred_lft forever
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1000
- link/ether fa:16:3e:2f:45:48 brd ff:ff:ff:ff:ff:ff
- inet 192.168.0.138/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
- valid_lft 49414sec preferred_lft 49414sec
- inet6 fe80::f816:3eff:fe2f:4548/64 scope link
- valid_lft forever preferred_lft forever
- ----- 网络连接测试 (ping vidisit.cn) -----
- PING web.s1267.vhostgo.com (211.149.238.18) 56(84) bytes of data.
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=1 ttl=46 time=38.4 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=2 ttl=46 time=38.2 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=3 ttl=46 time=38.3 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=4 ttl=46 time=38.2 ms
- --- web.s1267.vhostgo.com ping statistics ---
- 4 packets transmitted, 4 received, 0% packet loss, time 3198ms
- rtt min/avg/max/mdev = 38.228/38.330/38.499/0.176 ms
- ----- 系统负载 -----
- 21:02:38 up 64 days, 32 min, 1 user, load average: 0.29, 0.22, 0.23
- ===== 巡检结束 =====
- 结束时间: Fri Jul 26 21:02:38 CST 2024
- [root@ecs-52a1 quinn]#
复制代码
三、扩展:
1、扩展方向
可以将脚本的输出重定向到文件中,以便于后续分析和归档:./system_check.sh > system_check_report.txt。
如果需要定期检查,可以考虑将脚本添加到cron作业中,实现自动化巡检。
对于更复杂的检查,如服务状态、安全设置等,可能需要编写更详细的脚本或利用现有的监控和审计工具。
2、生存为可追加纪录的文件
生存为一个文件,文件名包罗当前的日期和时间,应该怎样修改脚本?
(1)新的脚本内容
- #!/bin/bash
- # 生成包含当前日期和时间的文件名
- filename="system_check_report_$(date +%Y%m%d_%H%M%S).txt"
- # 打印标题
- echo "===== 系统巡检报告 =====" | tee "$filename"
- echo "开始时间: $(date)" | tee -a "$filename"
- # 检查CPU信息
- echo "----- CPU 信息 -----" | tee -a "$filename"
- lscpu | tee -a "$filename"
- # 检查内存使用情况
- echo "----- 内存使用情况 -----" | tee -a "$filename"
- free -h | tee -a "$filename"
- # 检查磁盘使用情况
- echo "----- 磁盘使用情况 -----" | tee -a "$filename"
- df -h | tee -a "$filename"
- # 检查网络接口状态
- echo "----- 网络接口状态 -----" | tee -a "$filename"
- ip addr show | tee -a "$filename"
- # 检查网络连接(尝试ping一个外部地址,如vidisit的DNS服务器)
- echo "----- 网络连接测试 (ping www.vidisit.cn) -----" | tee -a "$filename"
- ping -c 4 www.vidisit.cn | tee -a "$filename"
- # 检查系统负载
- echo "----- 系统负载 -----" | tee -a "$filename"
- uptime | tee -a "$filename"
- # 脚本结束
- echo "===== 巡检结束 =====" | tee -a "$filename"
- echo "结束时间: $(date)" | tee -a "$filename"
- ~
- ~
复制代码
(2)脚本解释
在这个脚本中,利用了tee命令来同时向标准输出和文件写入内容。-a选项体现追加模式,这样每次执行脚本时,新的输出都会被添加到文件的末端,而不是覆盖旧的内容。
date +%Y%m%d_%H%M%S用于生成格式为年年年年代月日日_时时分分秒秒的日期时间字符串,这个字符串被用作文件名的一部分。
(3)脚本执行
利用如下命令执行脚本:
sh system_check_add.sh
得到如下结果:
- [root@ecs-52a1 quinn]# sh system_check_
- system_check_add.sh system_check_report_20240726_205829.txt system_check_report_20240726_205926.txt
- [root@ecs-52a1 quinn]# sh system_check_add.sh
- ===== 系统巡检报告 =====
- 开始时间: Fri Jul 26 21:10:21 CST 2024
- ----- CPU 信息 -----
- Architecture: x86_64
- CPU op-mode(s): 32-bit, 64-bit
- Byte Order: Little Endian
- CPU(s): 4
- On-line CPU(s) list: 0-3
- Thread(s) per core: 2
- Core(s) per socket: 2
- Socket(s): 1
- NUMA node(s): 1
- Vendor ID: GenuineIntel
- CPU family: 6
- Model: 85
- Model name: Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
- Stepping: 7
- CPU MHz: 2600.000
- BogoMIPS: 5200.00
- Hypervisor vendor: KVM
- Virtualization type: full
- L1d cache: 32K
- L1i cache: 32K
- L2 cache: 1024K
- L3 cache: 36608K
- NUMA node0 CPU(s): 0-3
- 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
- ----- 内存使用情况 -----
- total used free shared buff/cache available
- Mem: 7.6G 3.7G 1.5G 400M 2.5G 3.3G
- Swap: 0B 0B 0B
- ----- 磁盘使用情况 -----
- Filesystem Size Used Avail Use% Mounted on
- devtmpfs 3.9G 0 3.9G 0% /dev
- tmpfs 3.9G 0 3.9G 0% /dev/shm
- tmpfs 3.9G 401M 3.5G 11% /run
- tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
- /dev/vda1 99G 14G 81G 15% /
- tmpfs 783M 0 783M 0% /run/user/0
- tmpfs 783M 0 783M 0% /run/user/1001
- ----- 网络接口状态 -----
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- valid_lft forever preferred_lft forever
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1000
- link/ether fa:16:3e:2f:45:48 brd ff:ff:ff:ff:ff:ff
- inet 192.168.0.138/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
- valid_lft 86266sec preferred_lft 86266sec
- inet6 fe80::f816:3eff:fe2f:4548/64 scope link
- valid_lft forever preferred_lft forever
- ----- 网络连接测试 (ping www.vidisit.cn) -----
- PING web.s1267.vhostgo.com (211.149.238.18) 56(84) bytes of data.
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=1 ttl=46 time=38.3 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=2 ttl=46 time=38.2 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=3 ttl=46 time=38.4 ms
- 64 bytes from 211.149.238.18 (211.149.238.18): icmp_seq=4 ttl=46 time=38.2 ms
- --- web.s1267.vhostgo.com ping statistics ---
- 4 packets transmitted, 4 received, 0% packet loss, time 5557ms
- rtt min/avg/max/mdev = 38.218/38.306/38.419/0.250 ms
- ----- 系统负载 -----
- 21:10:28 up 64 days, 40 min, 1 user, load average: 0.13, 0.19, 0.22
- ===== 巡检结束 =====
- 结束时间: Fri Jul 26 21:10:28 CST 2024
- [root@ecs-52a1 quinn]#
- [root@ecs-52a1 quinn]#
复制代码
(4)检查报告
执行这个脚本后,会得到一个以当前日期和时间命名的文件,内里包罗了所有的巡检结果。
如下图所示:
以上脚本都在linux(centos7)上现实测试的结果。大家可以放心利用。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探究。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |