第三周作业
统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
先取出文件中默认shell 是/sbin/nolog 的行
[root@node03 /]# 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:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@node03 /]#
对/sbin/nologin的用户使用grep -v反选,查出默认shell为非/sbin/nologin的用户
[root@node03 /]# 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
[root@node03 /]#
使用wc -l显示用户数量
[root@node03 /]# cat /etc/passwd | grep -v /sbin/nologin | wc -l
4
[root@node03 /]#
使用cut -d: -f 1显示用户名
[root@node03 /]# cat /etc/passwd | grep -v /sbin/nologin |cut -d: -f 1
root
sync
shutdown
halt
[root@node03 /]#
查出用户UID最大值的用户名、UID及shell类型
第一步确认配置文件/etc/passwd 及其内容
login name:登录用名(wang)
passwd:密码 (x)
UID:用户身份编号 (1000)
GID:登录默认所在组编号 (1000)
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
cut -d: -f1,3,7 以:分隔符取1 3 7 列
[root@node02 ~]# cat /etc/passwd | cut -d: -f1,3,7
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
nobody:99:/sbin/nologin
systemd-network:192:/sbin/nologin
dbus:81:/sbin/nologin
polkitd:999:/sbin/nologin
sshd:74:/sbin/nologin
postfix:89:/sbin/nologin
apache:48:/sbin/nologin
mageia:1100:/bin/bash
slackware:2002:/bin/nologin
user1:2003:/bin/bash
user2:2004:/bin/bash
user3:2005:/bin/bash
sort -nr 排序 head -1 取第一行
[root@node02 ~]# cat /etc/passwd | cut -d: -f1,3,7|sort -nr|head -1
user3:2005:/bin/bash
[root@node02 ~]#
统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@node02 ~]# netstat -at | grep ':ssh'| tr -s ' '| cut -d' ' -f5 |cut -d: -f1|uniq -c |sort -nr
4 10.0.0.1
1 0.0.0.0
1 [
[root@node02 ~]#
root@node02 ~]# netstat -t | grep ':ssh'| tr -s ' '| cut -d' ' -f5 |cut -d: -f1|uniq -c |sort -nr
4 10.0.0.1
编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
先写出取硬盘空间利用率最大的值的命令
[root@node02 data]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1001884 0 1001884 0% /dev
tmpfs 1013948 0 1013948 0% /dev/shm
tmpfs 1013948 9780 1004168 1% /run
tmpfs 1013948 0 1013948 0% /sys/fs/cgroup
/dev/mapper/centos-root 104806400 1566180 103240220 2% /
/dev/sda1 1038336 140420 897916 14% /boot
/dev/mapper/centos-data 52403200 33028 52370172 1% /data
tmpfs 202792 0 202792 0% /run/user/0
#用下面的方法取出了分区利用率最大的值
[root@node02 data]# df | tr -s ' '|cut -d' ' -f5|sort -nr|head -n1
14%
[root@node02 data]#
编写shell脚本disk.sh
#!/bin/bash
#
#********************************************************************
#Author: lixiangshuai
#QQ: 2234396660
#Date: 2022-03-15
#FileName: disk.sh
#URL: http://www.magedu.com
#Description: A test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
df | tr -s ' '|cut -d' ' -f5|sort -nr|head -n1
执行:
[root@node02 data]# sh disk.sh
14%
编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
第一步,先把需要显示的信息都用linux 命令写出来
主机名 :
[root@node02 ~]# hostname
node02
IPv4地址:
[root@node02 ~]# ifconfig eth0 | head -2|tail -1|tr -s ' '|cut -d' ' -f3
10.0.0.151
操作系统版本:
[root@node02 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
内核版本:
[root@node02 ~]# uname -r
3.10.0-1160.el7.x86_64
CPU型号:
[root@node02 ~]# lscpu | grep '^Model name'|tr -s ' '|cut -d: -f2
Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
内存大小:
[root@node02 ~]# free -h|grep '^Mem'|tr -s ' '|cut -d' ' -f2
1.9G
硬盘大小:
root@node02 ~]# lsblk | grep 'sda\>'|tr -s ' '|cut -d' ' -f4
200G
开始写脚本
[root@node02 data]# cat systeminfo.sh
#!/bin/bash
#
#********************************************************************
#Author: lixiangshuai
#QQ: 2234396660
#Date: 2022-03-15
#FileName: systeminfo.sh
#URL: http://www.magedu.com
#Description: A test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
echo "主机名":`hostname`
echo "IPv4地址":`ifconfig eth0 | head -2|tail -1|tr -s ' '|cut -d' ' -f3`
echo "操作系统版本是":`cat /etc/redhat-release`
echo "内核版本是":`uname -r`
echo "CPU型号是":`lscpu | grep '^Model name'|tr -s ' '|cut -d: -f2`
echo "内存大小是":`free -h|grep '^Mem'|tr -s ' '|cut -d' ' -f2`
echo "硬盘大小是":`lsblk | grep 'sda\>'|tr -s ' '|cut -d' ' -f4`
[root@node02 data]# sh systeminfo.sh
主机名:node02
IPv4地址:10.0.0.151
操作系统版本是:CentOS Linux release 7.9.2009 (Core)
内核版本是:3.10.0-1160.el7.x86_64
CPU型号是: Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
内存大小是:1.9G
硬盘大小是:200G
[root@node02 data]#
vim
安装
yum -y install yum #vim 不是linux 默认自带的,需要安装
基本操作
1.打开文件
vim 文件名 <ENTER> #打开文件
2.光标移动使用箭头键或者hjkl四个字母
h(左)j(上)k(下)l(右)
3.退出
放弃所有更改退出: <ESC> :q! <ENTER> .
保存更改退出: <ESC> :wq <ENTER>
4、进入insert 模式
在光标前插入字符 i
在光标后插入字符 A
5、删除光标处的字符: x
删除光标所在的行: dd
注意:按<ESC>键可以让你回到正常模式或者取消你未完成的命令
移动光标
1. 跳到行首: 0
2. 移动到第一行: gg
3. 移动到在最后一行: G
4. 移动到某一行 : 数字 G
5. 移动到单词的末尾: e
插入操作
1. 小写字母 o 在当前行的下方插入一个空白行,并进入编辑模式
大写字母 O 在当前行的上方插入一个空白行,并进入编辑模式
2. 小写字母 a 要在光标的后面插入字符.
大写字母 A 要在该行的末尾添加字符
删除操作
1. 删除整行: dd
2. 删除光标到行尾: d$
3. 一些操作的格式是:
操作符 [数字] 移动
操作符:要做什么,例如字母d是用于删除
数字: 你要重复的次数
移动: 你的操作要作用在多少文本内容上,例如w就是一个单词,$是到行尾
比如:d5$ 光标所在的行,包含光标所在的行,删除后面的5行
4. 删除光标到文件尾: dG
搜索
前向搜索,输入 / 然后紧跟你要搜索的字符串,
后向搜索,输入 ?
输入 n 来找到下一个出现的地方
输入 N 来找到上一个出现的地方
CTRL-O可以回到之前的编辑的位置
CTRL-I可以跳到新的位置
替换
1. 替换光标所在行的第一个old单词为new
:s/old/new
2. 替换光标所在行的所有的old 单词为new
:s/old/new/g
3. 替换两个#之间的单词
:#,#s/old/new/g
4. 替换文件中所有的单词
:%s/old/new/g
5. 每一个替换之前都需要确认的话,在命令末尾加一个 c
:%s/old/new/gc
撤销操作
撤销之前的动作: u (小写u)
撤销这一行的所有改动: U (大写U)
撤销刚才的”撤销“: CTRL-R
其他几个操作
1. :!命令 会执行一个外部命令
一些例子如下:
(MS-DOS) (Unix)
:!dir :!ls 列出目录
:!del FILE :!rm FILE 删除文件
2. :w 文件名 把当前vim文件另存为某个文件名
3. v motion :w FILENAME 把选中的内容另存为到文件
4. :r FILENAME 从某个文件中取出内容添加到当前的位置,会把文件中所有的内容添加到当前位置
5. :r !dir 把列出目录命令的结果添加到光标的位置