linux运维篇3
1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
方法1:
awk -F: -v "a=0" '$NF!="/sbin/nologin"{bash[$1]++;a++}END{for (i in bash){print "用 户:"i}{print "总数:"a}}' /etc/passwd
方法2:
awk -F: '$NF!="/sbin/nologin"{print $1,$NF}' /etc/passwd|awk '{bash[$1]++}END{for (i in bash){print "用户:"i}{print "总数:"NR}}'
方法3:
cut -d: -f1,7 /etc/passwd|grep -v "/sbin/nologin"|awk -F: '{bash[$1]++}END{for (i in bash){print "用户:"i}{print "总数:"NR}}'
2、查出用户UID最大值的用户名、UID及shell类型
方法1:
awk -F: '{print $1,$3,$NF}' /etc/passwd|sort -t" " -k2 -nr|head -1
方法2:
cut -d: -f1,3,7 /etc/passwd|sort -t: -k2 -nr|head -1
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
方法1::
ss -t|awk '$0!~"Address:Port"{print $5}'|awk -F: '{print $1}'|sort -nr|uniq
方法2:需要安装:yum install -y net-tools
netstat -t|awk '$0!~"servers)"&&$0!~"Address"{print $5}'|awk -F: '{print $1}'|sort -rn|uniq
方法3:需要安装:yum install -y lsof
lsof -i:22|awk '$0!~"NAME"&&$0!~"*:ssh"{print $9}'|awk -F"localhost.localdomain:ssh->|:" '{print $2}'|sort -rn|uniq
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
不用脚本方式:
df |awk -F[" "%]+ '$5!="已用"{print $5}'|sort -rn
脚本方式:
vi disk.sh
#!/bin/bash
df |awk -F[" "%]+ '$5!="已用"{print $5}'>disk.txt
i=0
while read disk
do
if [ $disk -gt $i ];then
i=$disk
fi
done<disk.txt
echo "最大值:"$i
bash disk.sh
5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
vi systeminfo.sh
#!/bin/bash
#适合版本Centos7,Ubuntu 18.04
#打印菜单栏函数
menu() {
cat <<-EOF
#################################
# 1.显示当前主机名 #
# 2.ipv4地址 #
# 3.系统版本 #
# 4.内核版本 #
# 5.CPU型号 #
# 6.内存大小 #
# 7.硬盘大小 #
# b.返回菜单 #
# q.退出 #
#################################
EOF
}
#调用函数
menu
#定义循环
while :
do
read -p "请输入选择: " action
case "$action" in
1)
hostname
;;
2)
ip a
;;
3)
hostnamectl |awk -F: 'NR==7{print $2}'
;;
4)
uname -r
;;
5)
lscpu | awk 'NR==13{print $0}'
;;
6)
free -h
;;
7)
lsblk
;;
b)
menu
;;
q)
exit
;;
"")
;;
*)
echo "请输入正确选项"
;;
esac
done
bash systeminfo.sh