2020-12-21 第四周

1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来

[22:39:34  root@centos8 ~]#egrep "/sbin/nologin$" /etc/passwd |wc -l

20

[22:40:04  root@centos8 ~]#egrep "/sbin/nologin$" /etc/passwd | cat -n

1  bin:x:1:1:bin:/bin:/sbin/nologin

2  daemon:x:2:2:daemon:/sbin:/sbin/nologin

3  adm:x:3:4:adm:/var/adm:/sbin/nologin

4  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

5  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

6  operator:x:11:0:operator:/root:/sbin/nologin

7  games:x:12:100:games:/usr/games:/sbin/nologin

8  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

9  nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

10  dbus:x:81:81:System message bus:/:/sbin/nologin

11  systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin

12  systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin

13  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

14  polkitd:x:998:996:Userforpolkitd:/:/sbin/nologin

15  unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin

16  sssd:x:996:993:Userforsssd:/:/sbin/nologin

17  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

18  saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin

19  tcpdump:x:72:72::/:/sbin/nologin

20  slackware:x:2002:2019::/home/slackware:/sbin/nologin

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

sort命令选项:

    -n:依照数值得大小排序

    -r:以相反的顺序进行排序

    -t:指定分割符

    -K:指定列数

[01:24:22  root@centos8 ~]#cat /etc/passwd | cut -d: -f1,3,7 | sort -t: -k 2 -nr

nobody:65534:/sbin/nologin

user3:2005:/bin/bash

user2:2004:/bin/bash

user1:2003:/bin/bash

slackware:2002:/sbin/nologin

mageia:1100:/bin/bash

zf:1000:/bin/bash

systemd-coredump:999:/sbin/nologin

polkitd:998:/sbin/nologin

unbound:997:/sbin/nologin

sssd:996:/sbin/nologin

saslauth:995:/sbin/nologin

systemd-resolve:193:/sbin/nologin

dbus:81:/sbin/nologin

sshd:74:/sbin/nologin

tcpdump:72:/sbin/nologin

tss:59:/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

[01:24:31  root@centos8 ~]#cat /etc/passwd | cut -d: -f1,3,7 | sort -t: -k 2 -nr | head -1

nobody:65534:/sbin/nologin

[01:30:55  root@centos8 ~]#sort -t: -k 3 -nr /etc/passwd | cut -d : -f1,3,7 | head -1

nobody:65534:/sbin/nologin

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

[22:09:58  root@centos8 scripts]#w | egrep "^root" | tr -s ' ' | cut -d ' ' -f 3 | uniq -c | sort -nr

2 192.168.10.3

11 92.168.10.22

4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值

[22:22:35  root@centos8 scripts]#df -h | tr -s ' ' % | tr -d '[a-z|A-Z]'|cut -d % -f 5 | sort -nr

15

11

2

0

0

0

0

5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

[01:26:23  root@node scripts]#cat systeminfo.sh

#!/bin/bash

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 "--------------------------------------------------------"

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

vim 文本编辑工具

官方网站:www.vim.org

帮助手册:vimtutor

vim基础用法:

命令格式:

vim[options] [file ..]

常用选项

+#:打开文件让光标处于第#行,+默认文件的行尾

+/pattern:让光标处于第一个被pattern匹配到的行首

-bfile:二进制的方式打开文件

-dfile1 file2:比较多个文件,相当于vimdiff

-mfile:只读方式打开文件

-efile:直接进入ex模式,相当于执行ex file

备注说明:

文件存在,文件被打开并显示文件内容

文件不存在,当编辑第一次文件存盘时会创建它

vim的三种模式及模式的转换:

三种常见的模式:

命令模式:默认文件打开就是命令模式,可以实现光标的移动,剪切或粘贴文本

插入模式:可以修改文件的内容

末行模式:可以保存退出或进行文本的替换,查寻等功能

三种模式的转换方法:

命令模式 --> 插入模式

i:在光标所在处输入内容

I:在光标所在行的行首输入

a:在光标所在的后面输入

A:在光标所在行的行尾输入

o:在光标所在行的下方打开一个新行进行输入

O:在光标所在行的上方打开一个新行进行输入

插入模式-->esc-->命令模式--:--> 末行模式(wq(保存退出文档))

末行模式常用用法:

基本命令的使用:

w:写(存)磁盘文件

wq:写入并退出

x:写入并退出

X: 将编辑的文件进行加密

q:退出

q!:不存盘退出,即使更改的数据都将丢失

r file: 将文件的内容读取到当前文件中

w file:将当前文件的内容写入到另一个文件

!command:执行命令行命令

r!command:读入命令的输入到当前文件

地址定界的命令使用:

命令格式:

:start_pos,end_pos CMD

地址定界语法格式:

#:具体的第#行

#,#:表示第几行到第几行

#,+#:表示的当前行到后面的第几行,例如2,+3:代表第2行到第5行

.:代表当前行

$:代表最后一行

.,$-1:当前行到倒数第二行

%:显示文件全文

/pattern/:从当前行向下查找,直到匹配到pattern的第一行

/pat1/,/pat2/:从第一次被pat1模式匹配到行的开始,一直到第一次被pat2匹配到的行结束

#,/pattern/:从指定行开始,一直找到匹配到pattern的行

/pat/,$:向下找到第一个匹配到pattern的行到整个文件的结尾的所有行。

地址定界后跟一个编辑命令

d:删除

y:复制

w file:将范围内的行另存至指定的文件中

r file:在指定的位置插入指定文件中的所有内容

查找和替换的命令使用:

命令格式:

s/要查找的内容/替换为的内容/修饰符

    备注:

        要查找的内容可以使用基本的正则表达式

        替换为的内容,不能使用模式,但可以使用\1,\2等后向引用的符号。

        查找替代中的分割符/可以使用其他的字符替换,如#,@

修饰符:

i:忽略大小写

g:全局替换,默认情况下,每行只替换第一次出现

gc:全局替换,每次替换前询问

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容