文章目录
常用正则表达式
匹配任意IP地址(未匹配掩码)
'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
匹配私网ip地址
获取linux公网ip地址
root@sj-vps:~# ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1
104.168.102.10
1、校验指定目录下文件的md5值(含隐藏文件)
#!/bin/bash
# 只需要将变量改成您指定的目录即可
DIR="/root"
# 递归遍历指定目录下的所有目录和文件,并计算md5值
# find "$DIR" -type f -o -type d | while read -r path 若是使用这行,则会将空目录也打印出来
find "$DIR" -type f | while read -r path
do
# 计算文件或目录的MD5值
md5=$(md5sum "$path" | awk '{ print $1 }')
# 输出MD5值和文件路径
echo "MD5: $md5, Path: $path"
done
2、打印linux网卡的ip和状态信息
脚本内容区域,注意应用了grep的高级用法,以及多行结果转换为数组+数组的应用
注意:该脚本不适用一张网卡多个ip的情况
#!/bin/bash
#set -x
result=$(ip a | grep -Po '(?<=: ).*(?=:)' | grep -v lo)
net_list=($result)
num=1
echo "当前服务器的网卡信息如下:"
echo "+-----------------------------------------------------------------------------------------+"
echo "| 序号 | 网卡名 | IPv4地址 | IPv6地址 | 状态 |"
echo "+=========================================================================================+"
for netinterface in ${net_list[@]}
do
netinterface=$(echo $netinterface | awk -F'@' '{print $1}') # 修正写法,防止网卡名称中带有@字符,导致ip a show 网卡名失效
ipv4_address=$(ip a show $netinterface | grep -Po '(?<=inet ).*' | awk -F' ' '{print $1}')
# ipv4_address=$(ip a show $netinterface | grep -Po '(?<=inet ).*(?=\ brd|peer)') 这是另外一种匹配
ipv6_address=$(ip a show $netinterface | grep -Po '(?<=inet6 ).*' | awk -F' ' '{print $1}')
net_state=$(ip a show $netinterface | grep -Po '(?<=state ).*(?= group)')
[[ -z "$ipv4_address" ]] && ipv4_address=NULL
[[ -z "$ipv6_address" ]] && ipv6_address=NULL
printf "| %-5s| %-11s| %-24s| %-31s| %-9s|\n" $num $netinterface $ipv4_address $ipv6_address $net_state
echo "+-----------------------------------------------------------------------------------------+"
let num++
done
执行结果区域
root@sj-vps:~# ./test.sh
当前服务器的网卡信息如下:
+-----------------------------------------------------------------------------------------+
| 序号 | 网卡名 | IPv4地址 | IPv6地址 | 状态 |
+=========================================================================================+
| 1 | eth0 | 104.168.102.10/24 | fe80::216:3cff:fedb:e649/64 | UP |
+-----------------------------------------------------------------------------------------+
| 2 | cq_to_sj | 192.168.254.2 | NULL | UNKNOWN |
+-----------------------------------------------------------------------------------------+
| 3 | docker0 | 172.17.0.1/16 | NULL | DOWN |
+-----------------------------------------------------------------------------------------+
2、linux查看cpu相关信息
#!/bin/bash
#查看物理cpu颗数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
#查看逻辑cpu个数(线程数)
cat /proc/cpuinfo |grep "processor"|wc -l
#查看cpu核心数
cat /proc/cpuinfo |grep "cores"|uniq
#查看cpu主频
cat /proc/cpuinfo |grep MHz|uniq
#查看cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
#查看当前cpu工作在32/64位的模式下,若是32,不代表其不支持64位
getconf LONG_BIT
#查看当前cpu是否支持64位计算(结果大于0,说明支持64位)
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
#查看机器型号
dmidecode | grep "Product Name"
#查看cpu是否支持虚拟化
cat /proc/cpuinfo | grep -E '(vmx|svm)'
#查看详细的cpu信息
#cat /proc/cpuinfo
#简单查看cpu信息
#lscpu
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论