【Linux】文本处理及Shell编程
1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
[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 systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin unbound:x:996:992:Unbound DNS resolver:/etc/unbound:/sbin/nologin clevis:x:995:991:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin cockpit-ws:x:994:990:User for cockpit web service:/nonexisting:/sbin/nologin cockpit-wsinstance:x:993:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin sssd:x:992:988:User for sssd:/:/sbin/nologin setroubleshoot:x:991:987::/var/lib/setroubleshoot:/sbin/nologin chrony:x:990:986::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin user1:x:1000:1000::/home/user1:/bin/bash
[root@CentOS8 ~]# cat /etc/passwd | grep '/sbin/nologin$' 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 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 systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin unbound:x:996:992:Unbound DNS resolver:/etc/unbound:/sbin/nologin clevis:x:995:991:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin cockpit-ws:x:994:990:User for cockpit web service:/nonexisting:/sbin/nologin cockpit-wsinstance:x:993:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin sssd:x:992:988:User for sssd:/:/sbin/nologin setroubleshoot:x:991:987::/var/lib/setroubleshoot:/sbin/nologin chrony:x:990:986::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
[root@CentOS8 ~]# cat /etc/passwd | grep -v '/sbin/nologin$' 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 user1:x:1000:1000::/home/user1:/bin/bash [root@CentOS8 ~]# cat /etc/passwd | grep -v '/sbin/nologin$' | wc -l 5 [root@CentOS8 ~]# cat /etc/passwd | grep -v '/sbin/nologin$' | cut -d: -f1 root sync shutdown halt user1
2、查出用户UID最大值的用户名、UID及shell类型
[root@CentOS8 ~]# grep "\<`cat /etc/passwd | cut -d: -f3 | sort -rn | head -n 1`\>" /etc/passwd nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@CentOS8 ~]# netstat -ant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 10.0.0.8:22 10.0.0.4:52422 TIME_WAIT tcp 0 52 10.0.0.8:22 10.0.0.1:49396 ESTABLISHED tcp 0 0 10.0.0.8:22 10.0.0.4:52428 ESTABLISHED tcp 0 0 10.0.0.8:22 10.0.0.1:58257 ESTABLISHED tcp 0 0 10.0.0.8:22 10.0.0.4:52424 TIME_WAIT tcp 0 0 10.0.0.8:22 10.0.0.4:52430 ESTABLISHED tcp 0 0 10.0.0.8:22 10.0.0.4:52426 TIME_WAIT tcp 0 0 10.0.0.8:22 10.0.0.4:52360 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN [root@CentOS8 ~]# netstat -ant |grep "ESTABLISHED" | tr -s ' ' | cut -d" " -f5 | grep -Eo "([0-9]{1,3}\.){3}[0-9]"|sort | uniq -c | sort -nr 3 10.0.0.4 2 10.0.0.1 [root@CentOS8 ~]#
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
[root@CentOS8 data]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 372M 0 372M 0% /dev tmpfs tmpfs 392M 0 392M 0% /dev/shm tmpfs tmpfs 392M 5.7M 386M 2% /run tmpfs tmpfs 392M 0 392M 0% /sys/fs/cgroup /dev/mapper/cl-root xfs 5.0G 2.0G 3.1G 40% / /dev/mapper/cl-data xfs 3.0G 54M 3.0G 2% /data /dev/nvme0n1p1 xfs 1014M 202M 813M 20% /boot tmpfs tmpfs 79M 0 79M 0% /run/user/0
[root@CentOS8 data]# vim disk.sh #!/bin/bash #This script is for check Maximum disk partition usage information ############################# MAX_Usage=`df -Th | grep -Eo "[0-9]{1,3}\%" | sort -rn | head -1` MAX_File=`df -Th | grep $MAX_Usage | cut -d' ' -f1` echo -e "\033[1;32mMaximum disk usage partition information\033[0m" echo -e "MAX_Usage: \033[1;31m $MAX_Usage\033[0m" echo -e "MAX_File: \033[1;31m $MAX_File\033[0m"
[root@CentOS8 data]# chmod a+x disk.sh [root@CentOS8 data]# ./disk.sh Maximum disk usage partition information MAX_Usage: 40% MAX_File: /dev/mapper/cl-root [root@CentOS8 data]# dd if=/dev/zero of=/data/file bs=1M count=2500 2500+0 records in 2500+0 records out 2621440000 bytes (2.6 GB, 2.4 GiB) copied, 2.09592 s, 1.3 GB/s [root@CentOS8 data]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 372M 0 372M 0% /dev tmpfs tmpfs 392M 0 392M 0% /dev/shm tmpfs tmpfs 392M 5.7M 386M 2% /run tmpfs tmpfs 392M 0 392M 0% /sys/fs/cgroup /dev/mapper/cl-root xfs 5.0G 2.0G 3.1G 40% / /dev/mapper/cl-data xfs 3.0G 2.5G 505M 84% /data /dev/nvme0n1p1 xfs 1014M 202M 813M 20% /boot tmpfs tmpfs 79M 0 79M 0% /run/user/0 [root@CentOS8 data]# ./disk.sh Maximum disk usage partition information MAX_Usage: 84% MAX_File: /dev/mapper/cl-data

5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
[root@CentOS8 data]# vim system_info.sh #!/bin/bash #打印输出系统信息:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 # #Copyright (C): janzen@q All rights reserved RED="\033[1;31m" GREEN="\033[1;32m" White="\033[0m" HostName=`hostname` IP=`hostname -I` [[ -e /etc/redhat-release ]] && OSVersion=`cat /etc/redhat-release` || OSVersion=`cat //etc/issue | grep -v ^$ | cut -d'\' -f1` CPU=`lscpu | grep "^Model name:" | tr -s ' ' | cut -d":" -f2 | grep -Eo "[A-Za-z0-9].*"` MEM=`free -h | grep Mem | tr -s " " | cut -d' ' -f2` DISK=`lsblk |tr -s ' ' |grep "disk $" | cut -d' ' -f4`
DISK=`echo $DISK` echo -e "\033[1;33m-------------System Info----------------$White" echo -e "${RED}Hostname: $GREEN$HostName$White" echo -e "${RED}IP: $GREEN$IP$White" echo -e "${RED}OS_Version: $GREEN$OSVersion$White" echo -e "${RED}CPU: $GREEN$CPU$White" echo -e "${RED}MEM: $GREEN$MEM$White" echo -e "${RED}DISK: $GREEN$DISK$White" echo -e "\033[1;33m-------------------End-------------------$White"


6、20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)

浙公网安备 33010602011771号