一、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
步骤一:查看/etc/passwd文件内容
[root@Centos8 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
步骤二:统计非/sbin/nologin的用户个数,使用grep -v取反
[root@Centos8 ~]# grep -v /sbin/nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
yk:x:1000:1000:yk:/home/yk:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
[root@Centos8 ~]# grep -v /sbin/nologin /etc/passwd | wc -l
6
[root@Centos8 ~]#
步骤三:统计非/sbin/nologin的用户个数,将用户显示出来(是用cut)
[root@Centos8 ~]# grep -v /sbin/nologin /etc/passwd | cut -d: -f1
root
sync
shutdown
halt
yk
user1
[root@Centos8 ~]#
二、查出用户UID最大值的用户名、UID及shell类型
sort
文本排序命令
作用:将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入
**
PS:
**默认按照字母表顺序排序,数字在字母前面
格式:sort [options] file(s)
参数:
-r
执行反方向(由上至下)整理-R
随机排序-n
执行按数字大小整理-f
选项忽略(fold)字符串中的字符大小写-u
选项(独特,unique),合并重复项,即去重-t char
选项使用char做为字段界定符-k #
选项按照使用c字符分隔的 # 列来整理能够使用多次(取第几列)
[root@Centos8 ~]# sort -t: -k3 -nr /etc/passwd | head -1 | cut -d: -f1,3,7
nobody:65534:/sbin/nologin
[root@Centos8 ~]#
三、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@Centos8 ~]# w
10:02:35 up 2:02, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.2.121 12Jan21 54days 0.42s 0.42s -bash
root tty2 - 23Feb21 12days 0.31s 0.31s -bash
root pts/1 192.168.2.121 20Feb21 15days 0.33s 0.03s vim profile
root pts/2 192.168.2.59 09:51 0.00s 0.10s 0.01s w
[root@Centos8 ~]# w | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort -nr |uniq -c
1 192.168.2.59
2 192.168.2.121
[root@Centos8 ~]#
四、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
[root@Centos8 ~]# cat disk.sh
#!/bin/bash
BEGIN="\e[1;35m"
END="\e[0m"
echo -e "${BEGIN}`df | grep /dev/sda | grep -o '[0-9]\+%'`${END}"
[root@Centos8 ~]# sh disk.sh
24%
[root@Centos8 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 361M 0 361M 0% /dev
tmpfs 391M 0 391M 0% /dev/shm
tmpfs 391M 11M 380M 3% /run
tmpfs 391M 0 391M 0% /sys/fs/cgroup
/dev/mapper/cl-root 45G 4.6G 41G 11% /
/dev/mapper/cl-data 45G 354M 45G 1% /data
/dev/sda1 1014M 240M 775M 24% /boot
[root@Centos8 ~]#
五、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
[root@Centos8 ~]# cat systeminfo.sh
echo "-------------------system info--------------------------"
echo "当前主机名是: `hostname`"
echo "当前的主机IP地址是: `ifconfig | grep inet | egrep -o '[0-9]{1,3}(\.[0-9]+){1,3}[0-9]{1,3}' | head -1`"
echo "当前的操作系统版本是: `cat /etc/redhat-release`"
echo "当前的内核版本是: `uname -r`"
echo "当前的cpu型号是: `lscpu | grep Model | cut -d: -f2 | tail -1 | tr -s ' '`"
echo "当前的系统的总内存是: `free -h | grep Mem | tr -s ' ' : | cut -d: -f2`"
echo "当前的硬盘的大小是: `lsblk | grep disk | tr -s ' ' : | cut -d: -f5 `"
echo "--------------------------------------------------------"
[root@Centos8 ~]# sh systeminfo.sh
-------------------system info--------------------------
当前主机名是: Centos8
当前的主机IP地址是: 192.168
当前的操作系统版本是: CentOS Linux release 8.3.2011
当前的内核版本是: 4.18.0-240.el8.x86_64
当前的cpu型号是: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
当前的系统的总内存是: 780Mi
当前的硬盘的大小是: 100G
--------------------------------------------------------
[root@Centos8 ~]#