1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
#,先统计出有多少行(代码?)
方法一
sed '/nologin$/d' /etc/passwd|wc -l //行数
sed '/nologin$/d' /etc/passwd|gawk -F: '{print $1}'
方法二
grep -v nologin$ /etc/passwd -c
grep -v nologin$ /etc/passwd |cut -d: -f 1
grep -v nologin$ /etc/passwd -c && grep -v nologin$ /etc/passwd |cut -d: -f 1
脚本
vim userlist.sh
#!/bin/bash
set -e
users=`grep -v nologin$ /etc/passwd -c `
userlist=`grep -v nologin$ /etc/passwd |cut -d: -f 1`
echo /etc/passwd文件中其默认shell为非/sbin/nologin的用户个数为:$users
echo /etc/passwd文件中其默认shell为非/sbin/nologin的用户列表为:$userlist
set --
exit
2、查出用户UID最大值的用户名、UID及shell类型
方法一
cut -d: -f 1,3 /etc/passwd && cat /etc/passwd |rev |cut -d: -f 1 |rev
方法二
gawk -F: '{print $3,$1,$NF}' /etc/passwd|sort -nr|sed -n '1p'
gawk -F: '{print $3,$1,$NF}' /etc/passwd|sort -nr|awk 'NR==1'
脚本写法
vim maxUIDs.sh
#!/bin/bash
set -e
maxUID=`cut -d: -f 3 /etc/passwd |sort -rn |head -n 1`
maxuser=`grep $maxUID /etc/passwd|cut -d: -f 1`
maxshell=`grep $maxUID /etc/passwd|rev|cut -d: -f 1|rev`
echo UID最大值的用户名是:$maxuser
echo UID最大值的用户UID是:$maxUID
echo UID最大值的用户的shell是:$maxshell
echo 由于命令是三条,可能存在最大值用户名不是最大值用户UID,这是在不使用sed或awk命令下获取的值
maxUIDs=`gawk -F: '{print $3,$1,$NF}' /etc/passwd|sort -nr|awk 'NR==1'`
echo UID最大值的用户是 $maxUIDs
set --
exit
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
方法一
ss -nt|sed '1d'|tr -s ' ' ':'|gawk -c -F: '{print $(NF-2)}'|uniq -c|sort -nr #求简化方法
方法二
ss -nt|grep 22|tr -s ' ' ':' |cut -d: -f 6|uniq -c|sort -nr
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
vim /data/disk.sh
#!/bin/bash
set -e
#df -h|tr -s ' ' ':'|gawk -c -F: '{print $1,$(NF-1)}'
lyl=$(df -h|sed '1d'|tr -s ' ' ':'|gawk -F: '{print $(NF-1),$1}'|sort -nr|sed -n '1p')
echo '当前硬盘分区中空间利用率最大的值为' $lyl
set --
exit
# df |tail -n +2|awk -F'[ %]+' '{print $5,$1}'|sort -rn
# df |tail -n +2|awk -F'[ ]+' '{print $5,$1}'|sort -rn
------------------------------------------------------
#!/bin/bash
set -e
#lyl=$(df -h|sed '1d'|tr -s ' ' ':'|gawk -F: '{print $1}'|sort -nr|sed -n '1p')
zhi=$(df -h|sed '1d'|tr -s ' ' ':'|gawk -F: '{print $(NF-1),$1}'|sort -nr|sed -n '1p'|gawk -F' ' '{print $1}')
pan=$(df -h|sed '1d'|tr -s ' ' ':'|gawk -F: '{print $(NF-1),$1}'|sort -nr|sed -n '1p'|gawk -F' ' '{print $2}')
echo '当前硬盘分区中空间利用率最大的值为' $zhi
echo '当前硬盘分区中空间利用率最大的盘为' $pan
set--
exit
---------
bash /data/disk.sh
5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
vim /data/ysteminfo.sh
----
#!/bin/bash
set -e
---
echo '当前主机名是:' $hostname
IP4=$(nmcli device show ens33 |grep IP4.ADD|gawk -F' ' '{print $2}')
或
IP4=$(ifconfig ens33|grep mask|gawk -F' ' '{print $2}')
或
IP4=$(ifconfig ens33|sed -n '2p'|gawk -F' ' '{print $2}')
echo '当前IP地址是:' $IP4
xtbb=$(lsb_release -a|sed -n '3p'|gawk -F: '{print $2}' )
echo '当前操作系统版本是:' $xtbb
echo '当前内核版本是:' $(uname -r)
cpuxh=$(cat /proc/cpuinfo |grep name|sed -n '1p'|gawk -F: '{print $2}')
echo '当前CPU型号是:'
ncdx=$(free -h |grep Mem|gawk -F' ' '{print $2}')
echo '当前内存大小是:' $ncdx
ypfx=$(fdisk -l|grep dev)
echo '当前硬盘大小是:' $ypdx
--------------------
#!/bin/bash
set -e
#---
echo '当前主机名是:' $(hostname)
IP4=$(nmcli device show ens33 |grep IP4.ADD|gawk -F' ' '{print $2}')
echo '当前IP地址是:' $IP4
xtbb=$(lsb_release -a|sed -n '3p'|gawk -F: '{print $2}' )
echo '当前操作系统版本是:' $xtbb
echo '当前内核版本是:' $(uname -r)
cpuxh=$(cat /proc/cpuinfo |grep name|sed -n '1p'|gawk -F: '{print $2}')
echo '当前CPU型号是:' $cpuxh
ncdx=$(free -h |grep Mem|gawk -F' ' '{print $2}')
echo '当前内存大小是:' $ncdx
ypdx=$(fdisk -l|grep sd[a..z]:| gawk -F',' '{print $1}')
echo '当前硬盘大小是:' $ypdx
set --
exit
6、20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)
略