一. 简答实验题( 每题5分 ):
1. 请说出 5 个你熟悉的类 unix 系统名称
redhat,CentOS,debian,ubuntu,suse,freebsd
2. 请写出 5 个你熟悉的 Linux 软件的网络端口号和对应的软件名称。
httpd 80 nginx 80 mysql 3306 ftp 20,21 samba 137,138,139,445 NFS 111 rsync 873 smtp 25
3. CentOS7.6 和 Ubuntu18.04 网卡配置
-2 分(后面最好加上biosdevname=0)
#系统默认安装完成后网卡名称为 ens33,请写出如何使系统网卡名称格式变为 eth0 风格的步骤. #CentOS7修改网卡 sed -ri '/^GRUB_CMDLINE/s/(.*)"/\1 net.ifnames=0 biosdevname=0"/' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg reboot #ubuntu修改网卡,改的时候要谨慎配置文件 sed -ri '/^GRUB_CMDLINE/s/(.*)"/\1 net.ifnames=0 biosdevname=0"/' /etc/default/grub grub-mkconfig -o /boot/grub/grub.cfg reboot #修改完成后请分别写出两种系统配置网卡的过程,地址为桥接网络模型的 172.18.学号.200,并测试是否可以执行curl www.baidu.com 命令 # CentOS7配置 [root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 NAME=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=172.18.28.200 NATMASK=255.255.0.0 GATEWAY=172.18.0.1 DNS1=172.18.0.1 [root@node1 ~]# systemctl restart network [root@node1 ~]# curl www.baidu.com -I HTTP/1.1 200 OK # ubuntu配置 root@ubuntu:~# grep -v ^# /etc/netplan/01-netcfg.yaml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [172.18.28.201/16] gateway4: 172.18.0.1 nameservers: addresses: - 123.123.123.123 - 8.8.8.8 root@ubuntu:~# netplan apply root@ubuntu:~# curl www.baidu.com -I HTTP/1.1 200 OK
4. 请写出 ipv4 地址分类和每种类型中的私有网络地址范围
A类地址 (1)A类地址第1字节为网络地址,其它3个字节为主机地址。 (2)A类地址范围:1.0.0.1—126.255.255.254 (3)A类地址中的私有地址和保留地址: ① 10.X.X.X是私有地址范围(10.0.0.0-10.255.255.255) ② 127.X.X.X是保留地址,用做循环测试用的。 B类地址 (1) B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。 (2) B类地址范围:128.0.0.1—191.255.255.254。 (3) B类地址的私有地址和保留地址 :① 172.16.0.0—172.31.255.255是私有地址 ② 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。 C类地址 (1)C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。 (2)C类地址范围:192.0.0.1—223.255.255.254。 (3)C类地址中的私有地址: 192.168.X.X是私有地址。(192.168.0.0-192.168.255.255) D类地址 (1) D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。 (2) D类地址范围:224.0.0.1—239.255.255.254 E类地址 (1) E类地址不分网络地址和主机地址,它的第1个字节的前五位固定为11110。 (2) E类地址范围:240.0.0.1—255.255.255.254
5. 使用 xshell 连接 Linux 服务器时等待时间过长,请问您有什么处理方法解决这个问题。
#一般都是服务器的ssh服务未优化 sed '/^GSSAPIAuthentication/d' /etc/ssh/sshd_config -i sed '/^UseDNS/d' /etc/ssh/sshd_config -i echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config echo "UseDNS no" >> /etc/ssh/sshd_config systemctl restart sshd
6. shell 脚本编程 创建 60 个普通用户,用户名为 magedu01 到 magedu60 用户密码为Linux2019@38
[root@node1 ~]# cat useradd.sh #!/bin/bash RED="\033[0;31m" GREEN="\033[0;32m" NO_COLOR="\033[0m" usernameid=$(seq -w 01 60) for i in ${usernameid};do username=magedu$i id ${username} &> /dev/null [ "$?" -eq 0 ] && { echo -e "${RED}${username} already exists${NO_COLOR}";continue; } useradd ${username} echo "${username}:Linux2019@38" | chpasswd id ${username} &> /dev/null [ "$?" -eq 0 ] && { echo -e "${GREEN}${username} created successfully${NO_COLOR}"; } done [root@node1 ~]# bash useradd.sh magedu01 created successfully magedu02 created successfully ......
7. 使用 crontab 任务计划,完成:每月27号晚上10到12点之间每分钟执行一次 /root/backup.sh 脚本文件任务
[root@node1 ~]# echo '*/1 22,23 27 * * /bin/bash /root/backup.sh' >> /var/spool/cron/root
8. 请在 mysql 中创建 school 数据库,并在其中创建一个 student 表,表字段分别为学号(stuid),姓名(name),年龄(age), 电话(tel),
请写出上面的操作步骤和过程,并写出 "查询年龄大于平均年龄的前3名学生的姓名和年龄" 的sql语句
表结构如下: MariaDB [school]> desc student; +-------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | stuid | int(11) | NO | PRI | NULL | auto_increment || name | varchar(100) | NO | | NULL | | | age | int(11) | NO | | NULL | || tel | varchar(100) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+ 所有学生数据如下: MariaDB [school]> select * from student; +-------+---------+-----+-----+ | stuid | name | age | tel |+-------+---------+-----+-----+| 1 | magedu1 | 22 | 110 | | 2 | magedu2 | 36 | 120 || 3 | magedu3 | 39 | 999 | | 4 | magedu4 | 19 | 666 || 5 | magedu5 | 27 | 139 | +-------+---------+-----+-----+ 5 rows in set (0.00 sec) MariaDB [school]>
# 建库MariaDB [(none)]> create database school;# 建表MariaDB [school]> CREATE TABLE student( -> stuid int(11) PRIMARY KEY AUTO_INCREMENT, -> name varchar(100) NOT NULL, -> age int(11) NOT NULL, -> tel varchar(100) NOT NULL ); Query OK, 0 rows affected (0.00 sec)# 看表结构MariaDB [school]> desc student; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | stuid | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | NO | | NULL | | | age | int(11) | NO | | NULL | | | tel | varchar(100) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+ 4 rows in set (0.02 sec)#插入数据INSERT INTO student (name,age,tel) VALUES ("magedu1",22,"110"); MariaDB [school]> INSERT INTO student (name,age,tel) VALUES ("magedu2",36,"120"),("magedu3",39,"999"),("magedu4",19,"666"),("magedu5",27,"139");#查看表数据MariaDB [school]> select * from student; +-------+---------+-----+-----+ | stuid | name | age | tel | +-------+---------+-----+-----+ | 1 | magedu1 | 22 | 110 | | 2 | magedu2 | 36 | 120 | | 3 | magedu3 | 39 | 999 | | 4 | magedu4 | 19 | 666 | | 5 | magedu5 | 27 | 139 | +-------+---------+-----+-----+# 查询年龄大于平均年龄的前3名学生的姓名和年龄MariaDB [school]> select name,age from student where age > ( select avg(age) from student) limit 3; +---------+-----+ | name | age | +---------+-----+ | magedu2 | 36 | | magedu3 | 39 | +---------+-----+ 2 rows in set (0.00 sec)
二. 扩展题 (每题30分)
-8分
1. 编写 ansible playbook 实现在一台 CentOS7 中编译安装 httpd2.4.41 和 php7.3.7 的 fpm 模式,实现 httpd 通过 socket 与 php-fpm 通信,并测试 php 页面是否工作正常
# 参考:https://blog.51cto.com/14012942/2444885
2. httpd 服务器的访问日志保存在容量为20G 的 /dev/sdb 磁盘中,对应的挂载路径为/data-http-log,编写一个shell 脚本,每隔一个小时测试一下该磁盘的使用率是否超过70%,如果超过立刻将非本周的日志移动到远程服务器 172.18.0.100 服务器上,移动完成后,如果磁盘空间使用率依旧大于 70%, 则发邮件给 [email protected]提示报警,需要手动进行处理。
-2 分(罗里吧嗦)
#vmware插入磁盘, #触发磁盘扫描 [root@node1 ~]# for i in `seq 0 2`;do echo - - - > /sys/class/scsi_host/host$i/scan;done root@node1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 250M 0 part /boot ├─sda2 8:2 0 197.8G 0 part / └─sda3 8:3 0 2G 0 part [SWAP] sdb 8:16 0 20G 0 disk #格式化 [root@node1 ~]# fdisk /dev/sdb n -> p -> 回车 -> 回车 -> w [root@node1 ~]# partprobe [root@node1 ~]# lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part #创建文件系统并挂载 [root@node1 ~]# mkdir /data-http-log [root@node1 ~]# echo '/dev/sdb1 /data-http-log ext4 defaults,noatime 0 0' >> /etc/fstab [root@node1 ~]# mount -a [root@node1 ~]# df -h /dev/sdb1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 20G 45M 19G 1% /data-http-log
#编写脚本,发送邮件可以使用sendmail并配置发件人 #!/bin/bash . /etc/profile PARTITION=/dev/sdb1 NUMBER=70 USAGE=`df ${PARTITION} | awk -F'[ ]*|%' '/^\/dev\/sd/ {print $5}'` mailmail(){ #邮件服务已经配置测试好 echo $1 | mail -s 'warning' [email protected] } [ "${USAGE}" -gt "${NUMBER}" ] && \ { #ssh可连,目标存在 find /data-http-log/ -type f -mtime +7 -exec scp {} [email protected]:/backup/httpd-log/ \; [ "$?" -eq 0 ] && \ { find /data-http-log/ -type f -mtime +7 -delete; } || mailmail "backup failed..." } [ "${USAGE}" -gt "${NUMBER}" ] && \ { mailmail "${PARTITION} usage over 70 percent..." } #计划任务 [root@node1 ~]# echo '* */1 * * * /bin/bash /data/scripts/disk-usage-check.sh' >> /var/spool/cron/root