目录

2025-01-10-整理的6个Linux运维脚本

整理的6个Linux运维脚本

整理的6个Linux运维脚本

1、统计/etc/passwd 中能登录的用户,并将对应在/etc/shadow 中第二列密码提取

###统计当前 Linux 系统中可以登录的账户有多少个
grep "bash$" /etc/passwd | wc -l
或者
awk -F: '/bash$/{print $1}' /etc/passwd
——————————
###将对应在/etc/shadow 中第二列密码提出处理
user=$(awk -F: '/bash$/{print $1}' /etc/passwd)
for i in $user
do
awk -F: -v x=$i '$1==x{print $1,$2}' /etc/shadow
done

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/cc36b790938791e9f0b9145807d7ac04.png

2、查看当前连接到本机的远程IP地址

netstat -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq

这个命令的含义是:
netstat -tn:显示所有TCP连接的详细信息
awk '{print $5}':提取输出中的第五列,即远程IP地址和端口号
cut -d: -f1:使用冒号作为分隔符,只提取IP地址部分
sort:对IP地址进行排序
uniq:去除重复的IP地址
——————————

netstat -atn  |  awk  '{print $5}'  | awk  '{print $1}' | sort -nr  |  uniq -c

这个命令的含义是:
netstat -atn:显示当前系统的所有网络连接,包括TCP和UDP协议的连接
awk {print $5}’:使用awk命令提取netstat命令输出的结果中的第5列,该列显示了与当前系统建立连接的远程主机的IP地址和端口号
awk {print $1}’:使用awk命令进一步提取第5列中的IP地址部分,去除端口号。
sort -nr:对提取出的IP地址进行排序-n参数表示按照数字大小排序-r参数表示降序排序
uniq -c:统计并去除重复的IP地址,并计算每个IP地址的出现次数

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/7432c7180d7d596c0822c1f0a969b49b.png

3、检测本机当前用户是否为超级管理员(root)

#!/bin/bash

# 检查当前用户是否为root用户
if [ $(id -u) -eq 0 ]; then
    echo "当前用户是超级管理员(root)"
else
    echo "当前用户不是超级管理员"
fi

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/93a83775c2c9ba731f5b9e4738988aa8.png

4、检查指定目录下是否存在对应文件

#!/bin/bash

# 指定目录
directory="/path/to/directory"

# 检查文件是否存在
if [ -e "$directory/filename" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

——————————
或者使用:
#!/bin/bash
 
if [ -f /path/to/directory/filename ]
then 
echo "File exists"
fi

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/93faf0cf27fd41c28a2a56a74f6cc2b1.png

5、查找 Linux 系统中的僵尸进程

#!/bin/bash
#awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令
ps aux | awk {if($8 == Z){print $2,$11}}

该命令的作用是:

通过ps aux命令获取系统中所有进程的详细信息,并将输出结果通过管道传递给awk命令进行处理
awk命令中,通过if条件判断进程的状态是否为Z”(僵尸进程),如果是,则打印出进程的ID和进程名

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/88f62688330310fd75693db16adb476f.png

6、获取本机 MAC 地址

ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{print $2;getline;if($0~/link\/ether/){print 
$2}}' |grep -v lo:

该命令用于查看本机的MAC地址信息。具体解释如下:

ip a s:显示网络接口的配置信息。
awk 'BEGIN{print "本机 MAC 地址信息如下:"}:在输出之前,打印出提示信息。
/^[0-9]/{print $2;getline;if($0~/link\/ether/){print $2}}':对每一行进行匹配和处理。
/^[0-9]/:匹配以数字开头的行,即网络接口的行。
{print $2}:打印出第二列,即网络接口的名称。
getline:读取下一行。
if($0~/link\/ether/):如果当前行包含”link/ether”,则执行以下语句。
{print $2}:打印出第二列,即MAC地址
grep -v lo::过滤掉包含”lo:”的行,即排除本地回环接口的信息。

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/7af9b1929c91631691603f9530eaa167.png

68747470733a2f2f62:6c6f672e6373646e2e6e65742f71715f34313834303834332f:61727469636c652f64657461696c732f313332303430313836