Sre网络班阶段测试

**Sre网络班阶段测试(满分100分)
说明:

  1. 开卷,把代码和命令敲出来,能跑通,贴进来即可
    2.不会写的题可以不写,但尽量写一下哪里不懂**

一:用sed 命令修改/etc/fstab文件,删除文件中的空行,注释行,并保留文件备份(7分)

答案写这里:

[root@Rocky8 ~]#sed -ri.bak  '/^(#|$)/d' /etc/fstab 
/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=3c34b218-40db-4e4f-ab95-3fbcb99a3df1 /boot                   ext4    defaults        1 2
/dev/mapper/rl-date     /date                   xfs     defaults        0 0
UUID=7c505526-0fca-4a24-8542-795f4875f371 /date/mysql             ext4     defaults     0   0  
UUID=f6a41fd5-04a7-4600-8b51-98071ca7de87   /date/mysql           ext4     defaults        0 0
[root@Rocky8 ~]#ls /etc/fstab*
/etc/fstab  /etc/fstab.bak

二: 用 find 命令查找出 /var/ 目录中大于1M且以db结尾的文件(7分)

答案写这里:

[root@Rocky8 ~]#find /var/  -name  *.db -size +1M |xargs ls -hl
-rw-r--r--. 1 root root    1.8M Jun 14 10:28 /var/cache/dnf/packages.db
-rw-r--r--  1 root root    2.1M Jun 14 10:28 /var/cache/man/index.db
-rw-r-----  1 root slocate 4.1M Jun 14 00:00 /var/lib/mlocate/mlocate.db

三: 先判断当前主机是否安装了nginx包,如果没安装,则执行命令安装,如果己安装,则执行命令卸载,用短路运算实现(rocky8.6)(7分)

答案写这里:

which nginx &> /dev/null && yum remove nginx || yum -y install nginx

四:请用 rpm 命令列出 nginx 包中所有的配置文件(7分)

答案写这里:

[root@Rocky8 src]#rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/.build-id
/usr/lib/.build-id/2d
/usr/lib/.build-id/2d/a6da8eadeb05c036be9b4ea9ec6aecde0fcc35
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx/modules
/usr/sbin/nginx
/usr/share/doc/nginx
/usr/share/doc/nginx/CHANGES
/usr/share/doc/nginx/README
/usr/share/doc/nginx/README.dynamic
/usr/share/licenses/nginx
/usr/share/licenses/nginx/LICENSE
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx

五: 新增一块20G的硬盘,分三个区,大小分别是3GB,4GB,5GB,将这三个分区做成物理卷,然后创建卷组,在该卷组上创建一个6GB的逻辑卷,挂载至/log/ 目录下,再将该逻辑卷扩容至10GB,请写出实现步骤,文件系统不限(7分)

答案写这里:

1、将主机添加并连接一个20G的新硬盘

2、使用fdisk分区工具创建三个大小分别是3GB,4GB,5GB的分区,命令行输入fdisk /dev/nvme0n2,按下 n 创建新分区,然后选择适当的分区类型(p 为主分区,e 为扩展分区)。按照提示创建一个3GB的分区,重复此步骤创建4GB和5GB的分区。最后,按下 w 保存分区表并退出。 

3、将这三个分区创建为物理卷
[root@Rocky8 ~]#pvcreate /dev/nvme0n2p1  /dev/nvme0n2p2  /dev/nvme0n2p3
  Physical volume "/dev/nvme0n2p1" successfully created.
  Physical volume "/dev/nvme0n2p2" successfully created.
  Physical volume "/dev/nvme0n2p3" successfully created.

4、创建一个卷组(Volume Group),将物理卷添加进去。假设卷组的名称为mysqlvg0
[root@Rocky8 ~]#vgcreate mysqlvg0 /dev/nvme0n2p1  /dev/nvme0n2p2  /dev/nvme0n2p3
  Volume group "mysqlvg0" successfully created

5、再卷组上创建一个逻辑卷(Logical Volume)。假设逻辑卷的名称为 mysqlvg0-lv,大小为6GB:
[root@Rocky8 ~]#lvcreate -L 6G -n mysqlvg0-lv mysqlvg0
  Logical volume "mysqlvg0-lv" created.

6、格式化逻辑卷,可以选择 ext4、XFS 等文件系统格式,这里以 ext4 为例:
[root@Rocky8 ~]#mkfs.ext4 /dev/mysqlvg0/mysqlvg0-lv 
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 1572864 4k blocks and 393216 inodes
Filesystem UUID: c658b7a5-56cd-4b1d-8f67-a5248f5f012e
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

7、创建一个挂载点 /log/
[root@Rocky8 ~]# mkdir /log/

8、将逻辑卷挂载到 /log 目录下:
[root@Rocky8 ~]#mount /dev/mysqlvg0/mysqlvg0-lv /log/

9、查看挂载情况
[root@Rocky8 ~]#df -hl
Filesystem                         Size  Used Avail Use% Mounted on
devtmpfs                           875M     0  875M   0% /dev
tmpfs                              893M     0  893M   0% /dev/shm
tmpfs                              893M   87M  806M  10% /run
tmpfs                              893M     0  893M   0% /sys/fs/cgroup
/dev/mapper/rl-root                100G   20G   81G  20% /
/dev/nvme0n1p1                     974M  220M  687M  25% /boot
/dev/mapper/rl-date                 50G  390M   50G   1% /date
tmpfs                              179M     0  179M   0% /run/user/0
/dev/mapper/mysqlvg0-mysqlvg0--lv  5.9G   24K  5.6G   1% /log

10、扩容逻辑卷至10GB。首先,扩展逻辑卷的大小:
 [root@Rocky8 ~]# lvextend -L 10G /dev/mysqlvg0/mysqlvg0-lv 
  Size of logical volume mysqlvg0/mysqlvg0-lv changed from 6.00 GiB (1536 extents) to 10.00 GiB (2560 extents).
  Logical volume mysqlvg0/mysqlvg0-lv successfully resized.

11、实现文件系统的扩展 针ext 4文件系统
[root@Rocky8 ~]#resize2fs /dev/mysqlvg0/mysqlvg0-lv 
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/mysqlvg0/mysqlvg0-lv is mounted on /log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mysqlvg0/mysqlvg0-lv is now 2621440 (4k) blocks long.

12、查看挂载情况及逻辑卷大小
[root@Rocky8 ~]#df -h
/dev/mapper/mysqlvg0-mysqlvg0--lv  9.8G   24K  9.3G   1% /log

六:根据下列命令执行结果,写出你能读出来的信息(7分)

[mage@rocky86 ~]$ lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0  200G  0 disk
├─sda1              8:1    0    1G  0 part /boot
└─sda2              8:2    0  199G  0 part
  ├─rl-root       253:0    0   70G  0 lvm  /
  ├─rl-swap       253:1    0    2G  0 lvm  [SWAP]
  └─rl-home       253:2    0  127G  0 lvm  /home

答案写这里:

sda 硬盘上存在两个分区(sda1和sda2)。sda2 分区上创建了三个 LVM 逻辑卷(rl-root、rl-swap 和 rl-home),其中 rl-root 挂载在根目录 (/) 下,rl-swap 作为交换分区被使用,rl-home 挂载在 /home 目录下。分区1(sda1)上的 1GB 空间被挂载为 /boot 目录。
硬盘总体信息:

设备名:sda
大小:200GB
分区信息:

分区1:
设备名:sda1
大小:1GB
分区类型:part
挂载点:/boot
分区2:
设备名:sda2
大小:199GB
分区类型:part
逻辑卷(LVM)信息:

逻辑卷1:
设备名:rl-root
大小:70GB
分区类型:lvm
挂载点:/
逻辑卷2:
设备名:rl-swap
大小:2GB
分区类型:lvm
挂载点:[SWAP]
逻辑卷3:
设备名:rl-home
大小:127GB
分区类型:lvm
挂载点:/home

七: 请配置一块网卡,IP地址是 10.0.0.110,子网掩码是24位,网关是 10.0.0.2,DNS分别是 10.0.0.2 和 114.114.114.114,请写出配置文件内容,另外,写一个脚本,配置成别名,该别名对 root用户永久生效,要求传入网卡设备名可以让修改后的内容重载生效。(8分)

答案写这里:

1、打开终端,使用以下命令编辑网络配置文件(以Ubuntu为例)
sudo nano /etc/netplan/99-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses: [10.0.0.110/24]
      gateway4: 10.0.0.2
      nameservers:
        addresses: [10.0.0.2, 114.114.114.114]

2、应用配置更改,使用以下命令使配置生效:
[root@Ubuntu ~]#sudo netplan apply

3、配置成别名创建一个脚本文件setnetwork.sh
[root@Ubuntu ~]#vim setnetwork.sh 

#!/bin/bash
# 网卡设备名
DEVICE=$1

# 判断是否为root用户
if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root."
    exit 1
fi

# 编辑网络配置文件
Sudo vim /etc/netplan/eth0.yaml

# 应用配置更改
sudo netplan apply

4、对root用户永久生效,将脚本复制到 /usr/local/bin/ 目录下,并更改文件的权限为可执行:
[root@Ubuntu ~]# cp setnetwork.sh /usr/local/bin/
[root@Ubuntu ~]# chmod +x setnetwork.sh 

5、在 /root/.bashrc 文件中添加以下行以创建别名:
[root@Ubuntu ~]# vim/root/.bashrc
alias setnetwork='/usr/local/bin/set_network_alias.sh'
保存并关闭文件。

6、使用以下命令配置设备名为 eth0 的网卡:

[root@Ubuntu ~]#  setnetwork eth0

7、重启或者netplay apply使配置生效

八: 请描述一下一个网络请求从一台设备到另一台设备的具体过程(10分)

答案写这里:

一个网络请求从一台设备到另一台设备的过程通常包括以下步骤:

1. 应用层请求:应用程序发起网络请求,例如,使用浏览器发送 HTTP 请求或使用邮件客户端发送电子邮件。

2. 传输层封装:请求数据被传递给传输层协议,例如 TCP(传输控制协议)或 UDP(用户数据报协议),用于分割和封装数据。

3. 网络层封装:传输层的数据被封装在网络层协议数据包中,例如 IP(互联网协议),该数据包包含源IP地址和目标IP地址。

4. 数据链路层封装:网络数据包被封装在数据链路层协议的数据帧中,例如以太网协议,该数据帧包含源MAC地址和目标MAC地址。

5. 物理层传输:数据帧通过网络中的物理链路传输,例如通过以太网电缆、无线信号等。

6. 物理层接收:数据帧到达目标设备的物理层,根据MAC地址进行接收。

7. 数据链路层解封:目标设备的数据链路层协议解封接收到的数据帧,提取网络数据包。

8. 网络层解封:目标设备的网络层协议解封接收到的网络数据包,从中提取传输层数据。

9. 传输层解封:目标设备的传输层协议解封接收到的传输层数据,提取应用层数据。

10. 应用层处理:目标设备的应用程序处理接收到的应用层数据,执行相应的操作,例如呈现网页内容或解析电子邮件。

九:当执行shell脚本时,可向shell脚本传参,请说明 $0, KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,@,$* 这几个参数的含义(10分)

答案写这里:

$1, $2, ... 对应第1个、第2个等参数,shift [n]换位置
$0 命令本身,包括路径
$* 传递给脚本的所有参数,全部参数合为一个字符串
$@ 传递给脚本的所有参数,每个参数为独立字符串
$# 传递给脚本的参数的个数

十: 写一个脚本,计算出100以内能被3整除的数之和,以及能被4整除的数之后,然后再输出这两个数字(10分)

答案写这里:

[root@Rocky8 ~]#vim test.sh
#!/bin/bash

sum_by_3=0
sum_by_4=0

# 计算能被3整除的数之和
for ((i=3; i<=100; i+=3)); do
  sum_3=$((sum_by_3 + i))
done

# 计算能被4整除的数之和
for ((i=4; i<=100; i+=4)); do
  sum_by_4=$((sum_by_4 + i))
done

echo "能被3整除的数之和:$sum_by_3"
echo "能被4整除的数之和:$sum_by_4"

[root@Rocky8 ~]#bash test.sh 
能被3整除的数之和:1683
能被4整除的数之和:1300

十一:写一个脚本,打印输出8行8列的国际象棋棋盘,使用红黄两色(10分)

答案写这里:

#!/bin/bash

# 初始颜色
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

# 循环打印棋盘
for ((row=1; row<=8; row++)); do
  for ((col=1; col<=8; col++)); do
    # 判断颜色
    if (( (row + col) % 2 == 0 )); then
      square_color=$RED
    else
      square_color=$YELLOW
    fi  

    # 打印棋盘方块
    echo -e "${square_color}██${NC}\c"
  done
  echo # 换行
done

十二:写一个脚本,生成10个随机数放到一个数组中,再将该数组中的元素从小大到排序进行输出(10分)

答案写这里:

[root@Rocky8 ~]#vim script.sh
#!/bin/bash

# 生成10个随机数的数组
numbers=()
for ((i=0; i<10; i++))
do
  numbers+=($RANDOM)
done

# 排序数组
sorted_numbers=($(printf '%s\n' "${numbers[@]}" | sort -n))

# 输出排序后的数组
echo "排序后的数组:"
for num in "${sorted_numbers[@]}"
do
  echo "$num"
Done

[root@Rocky8 ~]#bash script.sh 
排序后的数组:
8027
8487
9099
9394
10978
18259
20089
20445
29792
31737
[root@Rocky8 ~]#bash script.sh 
排序后的数组:
3859
5509
13370
17862
18520
19585
20772
30055
30692
32474
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大海绵啤酒肚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值