综合练习--The Fifth Week

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 by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
guan:x:1000:1000:guan:/home/guan:/bin/bash
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
apache:x:48:48:apache:/var/www:/sbin/nologin
test:x:1001:1001::/home/test:/bin/bash
gentoo:x:1002:1003:Gentoo Distribution:/home/gentoo:/bin/csh
nginx:x:1003:1005::/home/nginx:/bin/bash
varnish:x:1004:1006::/home/varnish:/bin/bash
tomcat:x:1006:1008::/home/tomcat:/bin/bash
git:x:1007:1010::/home/git:/bin/bash
test2:x:1008:1011::/home/test2:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[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
guan:x:1000:1000:guan:/home/guan:/bin/bash
test:x:1001:1001::/home/test:/bin/bash
gentoo:x:1002:1003:Gentoo Distribution:/home/gentoo:/bin/csh
nginx:x:1003:1005::/home/nginx:/bin/bash
varnish:x:1004:1006::/home/varnish:/bin/bash
tomcat:x:1006:1008::/home/tomcat:/bin/bash
git:x:1007:1010::/home/git:/bin/bash
test2:x:1008:1011::/home/test2:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[root@centos8 ~ ]#grep -v /sbin/nologin /etc/passwd | wc -l
14
[root@centos8 ~ ]#grep -v /sbin/nologin /etc/passwd | cut -d: -f1
root
sync
shutdown
halt
guan
test
gentoo
nginx
varnish
tomcat
git
test2
mageia
slackware

2、查出用户UID最大值的用户名、UID及shell类型

第一步:用cut命令从/etc/passwd中取用户名、UID及shell类型,用sort命令以UID进行排序(从大到小或从小到大都行)
第二步:用head取第一列(从大到小)或tail取最后一列
[root@centos8 ~ ]#cut -d: -f1,3,7 /etc/passwd | sort -t: -k2 -nr
nobody:65534:/sbin/nologin
slackware:2002:/bin/tcsh
mageia:1100:/bin/bash
test2:1008:/bin/bash
git:1007:/bin/bash
tomcat:1006:/bin/bash
varnish:1004:/bin/bash
nginx:1003:/bin/bash
gentoo:1002:/bin/csh
test:1001:/bin/bash
guan:1000:/bin/bash
systemd-coredump:999:/sbin/nologin
polkitd:998:/sbin/nologin
unbound:997:/sbin/nologin
sssd:996:/sbin/nologin
rngd:995:/sbin/nologin
systemd-resolve:193:/sbin/nologin
postfix:89:/sbin/nologin
dbus:81:/sbin/nologin
sshd:74:/sbin/nologin
tss:59:/sbin/nologin
apache:48:/sbin/nologin
ftp:14:/sbin/nologin
games:12:/sbin/nologin
operator:11:/sbin/nologin
mail:8:/sbin/nologin
halt:7:/sbin/halt
shutdown:6:/sbin/shutdown
sync:5:/bin/sync
lp:4:/sbin/nologin
adm:3:/sbin/nologin
daemon:2:/sbin/nologin
bin:1:/sbin/nologin
root:0:/bin/bash
[root@centos8 ~ ]#cut -d: -f1,3,7 /etc/passwd | sort -t: -k2 -nr | head  -n1
nobody:65534:/sbin/nologin

3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

思路:用tr命令将获取的数据空格去重并转换成":"用cut命令提取远程主机IP,用grep命令只匹配数字,uniq命
令去重显示重复的次数,用sort从大到小拍寻
[root@centos8 ~ ]#ss -ntu | tr -s " " ":" | cut -d: -f7 | grep  [[:digit:]] | uniq -c | sort -nr
      3 192.168.20.1
      1 192.168.20.254

4、编写脚本createuser.sh,实现如下功能:使用一个用户名作为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id等信息。

#!/bin/bash
read -p "输入需要创建的账户名称:" NAME
if [ "`id $NAME &> /dev/null ;echo $?`" == "0" ]  ;  then                                                                                                                                                                                        
echo "账户¥$NAME已存在,账户信息是:"
echo "`getent passwd $NAME`"
else
echo "账户$NAME不存在,已创建新账户:"
useradd $NAME
echo "`getent passwd $NAME`"
fi
改:
#!/bin/bash
read -p "输入需要创建的账户名称:" NAME
if   `id $NAME &> /dev/null` ;  then                                                                                                                                                                                                             
echo "账户已存在,账户信息是:"
echo "`getent passwd $NAME`"
else
echo "账户不存在,已创建新账户:"
useradd $NAME
echo "`getent passwd $NAME`"
fi


5、编写生成脚本基本格式的脚本,包括作者,联系方式、版本、时间、描述等

home目录中创建.vimrc文件
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
        if expand("%:e") == 'sh'
        call setline(1,"#!/bin/bash")
        call setline(2,"#")
        call setline(3,"#**********************************************************************")
        call setline(4,"#Author:                      awakening")                                                                                                                                                                                
        call setline(5,"#QQ:                          397269789")
        call setline(6,"#Date:                        ".strftime("%Y-%m-%d"))
        call setline(7,"#Filename:                    ".expand("%"))
        call setline(8,"#URL:                         http://www.yunmix.top")
        call setline(9,"#Description:                 The test script")
        call setline(10,"#**********************************************************************")
        call setline(11,"")
        endif
endfunc
autocmd BufNewFile * normal G
~                                  

猜你喜欢

转载自blog.csdn.net/weixin_50904580/article/details/109448980