小白学习Linux之路4
1.统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
第一步:找出/etc/passwd文件中默认shell非/sbin/nologin的用户并显示出来,命令如下:
[root@CentOS8 ~]# grep -v ".*/sbin/nologin$" /etc/passwd | cut -d : -f 1,7 root:/bin/bash sync:/bin/sync shutdown:/sbin/shutdown halt:/sbin/halt wang:/bin/bash zrf:/bin/bash gentoo:/bin/chs nginx:/bin/bash varnish:/bin/bash mage:/bin/bash git:/bin/bash test2:/bin/bash mageia:/bin/bash user1:/bin/bash user2:/bin/bash user3:/bin/bash [root@CentOS8 ~]#

备注说明:
grep -v ".*/sbin/nologin$" /etc/passwd 命令是找出/etc/passwd中默认shell非/sbin/nologin的行;
cut -d : -f 1,7是将找出的行,按“:”字符分割,找出第1列和第7列。第7列是显示的是默认shell类型,都是非/sbin/nologin。
第二步:统计出用户个数,命令如下:
[root@CentOS8 ~]# grep -v ".*/sbin/nologin$" /etc/passwd | cut -d : -f 1,7 | wc -l 16 [root@CentOS8 ~]#

备注说明:
在上面的命令后面再加上wc -l命令就可以统计用户的个数了
2.查出用户UID最大值的用户名、UID及shell类型
思路:
(1)将passwd文件中的UID列按照从大到小排列
cat /etc/passwd | sort -t : -k 3,3nr
(2)然后将排列好的内容通过管道符|传给cut命令;然后取出第一列:用户名,第三列UID,第七列shell;
cat /etc/passwd | sort -t : -k 3,3nr | cut -d : -f 1,3,7
(3)最后使用head命令列出第一条输出,就是UID最大的用户名。
cat /etc/passwd | sort -t : -k 3,3nr | cut -d : -f 1,3,7 | head -1
其中 head -1就是head -n 1

3.统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
思路:
(1)使用命令ss -nt列出远程链接信息;
ss -nt
(2)因为ss -nt列出的信息有干扰行:第一行,使用命令tail -n +2排除干扰行;
ss -nt | tail -n +2
(3)将上面命令列出的空格替换为“:”;
ss -nt | tail -n +2 | tr -s ' ' ':'
(4)使用cut命令剪切处远程主机的IP地址;
ss -nt | tail -n +2 | tr -s ' ' ':' | cut -d : -f 6
(5)使用uniq命令统计重复IP的个数;
ss -nt | tail -n +2 | tr -s ' ' ':' | cut -d : -f 6 | uniq -c
(6)使用sort命令将IP的个数按照从大到小顺序排列;
ss -nt | tail -n +2 | tr -s ' ' ':' | cut -d : -f 6 | uniq -c | sort -nr

4.编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
第一步:在/data目录下编写disk.sh文件(也可以是其它目录),然后点击回车键
[root@CentOS8 ~]# cd /data
[root@CentOS8 data]# vim disk.sh

第二步:点击回车键后,进入disk.sh文件的命令模式,点击i建,进入插入模式进行编辑。
第三步:在插入模式下,输入以下内容,并保存退出。
#!/bin/bash
RED="\e[1;31m"
END="\e[0m"
#第一种方法
echo ----------------------------------------------------
disk=`df | tail -n +2 | tr -s ' ' '%' | cut -d % -f 5 | sort -nr | head -1`
echo -e "当前硬盘分区中空间利用率最大的值为$RED$disk$END"
echo -----------------------------------------------------
#第二种方法
echo "当前硬盘分区中空间利用率最大的详细信息如下:"
echo -e "$RED`df | tail -n +2 | sort -t % -k 1.44,1.46nr | head -1`$END"
echo ----------------------------------------------------
第四步:给disk.sh文件添加x执行权限
chmod a+x /data/disk.sh

第五步:执行disk.sh文件,显示执行结果:
/data/disk.sh

5.编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
第一步:列出获取主机信息的命令:
(1)主机名:hostname
(2)IPV4地址:ifconfig ens33|head -2|tail -1|tr -s ' ' ':'|cut -d : -f 3
(3)操作系统版本:cat /etc/centos-release
(4)内核版本:uname -r
(5)CPU型号:grep "Model name"|cut -d % -f 2
(6)内存大小:free -h | head -2|tail -1|tr -s ' ' '%'|cut -d % -f 2
(7)硬盘大小:lsblk|head -2 | tail -1|tr -s ' ' '%'|cut -d % -f 4
第二步:使用vim打开systeminfo.sh文件

第三步:点i键进入插入模式,将第一步中的命令写入systeminfo.sh文件后,并保存退出.详细内容如下:
#!/bin/bash
RED="\E[1;31m"
GREEN="echo -e \E[1;32m"
END="\E[0m"
$GREEN----------------------Host systeminfo--------------------$END
echo -e "HOSTNAME: $RED`hostname`$END"
echo -e "IPADDR: $RED` ifconfig ens33|head -2|tail -1|tr -s ' ' :|cut -d : -f 3`$END"
echo -e "OSVERSION: $RED`cat /etc/centos-release`$END"
echo -e "KERNEL: $RED`uname -r`$END"
echo -e "CPU: $RED`lscpu|grep 'Model name'|tr -s ' '|cut -d : -f 2`$END"
echo -e "MEMORY: $RED`free -h | head -2|tail -1|tr -s ' ' '%'|cut -d % -f 2`$END"
echo -e "DISK: $RED`lsblk|head -2 | tail -1|tr -s ' ' '%'|cut -d % -f 4`$END"
$GREEN---------------------------------------------------------$END

第四步:给systeminfo.sh文件添加x权限

第五步:执行/data/systeminfo.sh文件


浙公网安备 33010602011771号