《Linuⅸx操作系统》实验指导/实验七:通过 Shell编程实现操作系统管理维护 《 Linux操作系统》实验指导 实验七:通过 Shelll 编程实现操作系统管理维护 、实验目的 1、掌握Shel的基础语法; 2、掌握 Bash shell的基础语法 3、掌握文本工具awk、sed的使用方法; 4、掌握 Shell编程实现系统管理的方法: 5、掌握 Linux操作系统中计划任务的实现方法 实验学时 三、实验类型 创新性 四、实验需求 1、硬件 单机虚拟化:每人配备计算机1台,计算机接入实验室局域网,且使用固定IP地址 云服务器:每人配备计算机1台、云服务器1台,云服务器提供SSH方式的远程管理。 2、软件 Windows7操作系统,安装 Mware Workstation10+、 PuTty软件。 3、网络 支持对互联网的访问。 4、工具 无 五、实验理论 1、 Linux shel的基本内容 2、 Bash shell的基本内容 3、awk、sed的基本原理 4、cron的运行原理。 六、预备知识 1、 Linux中文本工具的基本使用方法 Shell的基本命令; 管理科学与工程学科/共8页第1页
《Linux 操作系统》实验指导 / 实验七:通过 Shell 编程实现操作系统管理维护 管理科学与工程学科 / 共 8 页,第 1 页 《Linux 操作系统》实验指导 实验七:通过 Shell 编程实现操作系统管理维护 一、实验目的 1、掌握 Shell 的基础语法; 2、掌握 Bash Shell 的基础语法; 3、掌握文本工具 awk、sed 的使用方法; 4、掌握 Shell 编程实现系统管理的方法; 5、掌握 Linux 操作系统中计划任务的实现方法。 二、实验学时 2 学时 三、实验类型 创新性 四、实验需求 1、硬件 单机虚拟化:每人配备计算机 1 台,计算机接入实验室局域网,且使用固定 IP 地址。 云服务器:每人配备计算机 1 台、云服务器 1 台,云服务器提供 SSH 方式的远程管理。 2、软件 Windows 7 操作系统,安装 VMware Workstation 10+、PuTTY 软件。 3、网络 支持对互联网的访问。 4、工具 无 五、实验理论 1、Linux Shell 的基本内容; 2、Bash Shell 的基本内容; 3、awk、sed 的基本原理; 4、cron 的运行原理。 六、预备知识 1、Linux 中文本工具的基本使用方法; 2、Linux 下 Shell 的基本命令;
《Linuⅸx操作系统》实验指导/实验七:通过 Shell编程实现操作系统管理维护 2 3、Linuⅸκ操作系统中常见的文本处理命令有哪些?请根据以前学习,进行总结并完成表 1-1常见的文本处理命令一览表 表1-1常见的文本处理命令一览表 文本处理命令 应用场景 文本处理命令 应用场景 要求 请查阅相关资料,完成表1-1的填写,至少需要填写8条常见的文本处理命令,并将表格填 写到实验报告册中 4、 Linuxκ操作系统中常见的査看各种设备和资源的命令有哪些?请根据以前学习,进行 总结并完成表1-2常见的设备和资源状态查看命令一览表 表1-2常见的设备和资源状态查看命令一览表 命令 应用场景 命令 应用场景 要求 请查阅相关资料,从操作系统的内核版本、系统版本、CPU、内存、磁盘、用户信息、系统 程、网络信息等方面完成表1-2的填写,至少需要填写12条设备和资源状态查看命令 并将表格填写到实验报告册中。 七、实验任务 1、掌握awk、sed的使用方法; 2、掌握通过awk、sed实现系统管理与维护的方法 3、掌握计划任务实现系统管理与维护的方法 管理科学与工程学科/共8页第2页
《Linux 操作系统》实验指导 / 实验七:通过 Shell 编程实现操作系统管理维护 管理科学与工程学科 / 共 8 页,第 2 页 3、Linux 操作系统中常见的文本处理命令有哪些?请根据以前学习,进行总结并完成表 1-1 常见的文本处理命令一览表。 表 1-1 常见的文本处理命令一览表 文本处理命令 应用场景 文本处理命令 应用场景 要求: 请查阅相关资料,完成表 1-1 的填写,至少需要填写 8 条常见的文本处理命令,并将表格填 写到实验报告册中。 4、Linux 操作系统中常见的查看各种设备和资源的命令有哪些?请根据以前学习,进行 总结并完成表 1-2 常见的设备和资源状态查看命令一览表。 表 1-2 常见的设备和资源状态查看命令一览表 命令 应用场景 命令 应用场景 要求: 请查阅相关资料,从操作系统的内核版本、系统版本、CPU、内存、磁盘、用户信息、系统 进程、网络信息等方面完成表 1-2 的填写,至少需要填写 12 条设备和资源状态查看命令, 并将表格填写到实验报告册中。 七、实验任务 1、掌握 awk、sed 的使用方法; 2、掌握通过 awk、sed 实现系统管理与维护的方法; 3、掌握计划任务实现系统管理与维护的方法
Lmx操作系统)》实验指导/实验七:通过Sml编程实现操作系统管理维护3 八、实验步骤 1、实验场景与实验环境准备 本实验可根据实验室的具体条件,在单机虚拟化和云服务器两种场景下开展实验教学 (1)单机虚拟化场景下开展实验教学 实验场景 每位学生通过物理主机上的虚拟化软件 VMware workstation安装 Ubuntu server虚拟操作系 统,虚拟操作系统 Ubuntu server配备固定P地址,并开启SSH远程管理服务。 实验准备 ①启动虚拟化软件 Mware workstation并附加上 Ubuntu server操作系统; ②配置 Ubuntu Server操作系统的网络,并在虚拟主机上使用Ping命令进行网络连通性测 ③在虚拟主机上安装 openssh,ufwo开启 openssh服务,并设置ufw的规则为允许 172.162x/24的主机访问,开放22端口 ④虚拟主机后台运行,通过物理主机上的 PuTTY软件,连接 Ubuntu Server操作系统 (2)云服务器场景下开展实验教学 实验场景 在云服务器为学生安装部署 Linux操作系统,每个操作系统配备固定IP地址,并开启SSH远 程管理服务,并把root用户权限和远程访问信息提供给学生。 实验准备 学生使用 Windows7操作系统开展实验学习,使用 PuTTY软件根据教师提供的云服务器访问 信息远程访问实验用的Linu操作系统。 2、文本处理工具—awk和sed (1)aw的用法 任何awk语句都是由模式和动作组成。模式决定动作何时触发和触发事件,动作执行对输入 行的处理。awk认为输入文件是结构化的,awk将每个输入文件行定义为记录,行中的每个字符 串定义为域,域之间用空格、Tab键或其他符号进行分隔,分隔域的符号叫做分隔符。 awk常用内置变量如1-3awk常见的内置变量表所示 常见的内置变量表 变量 含义 变量 含义 当前记录 SI-Sn 当前记录的第n个字段 输入字段分隔符,默认是空格 当前记录中的字段个数 已经读出的记录数 输入记录分隔符 输出域分隔符,默认是空格 ORS 输出记录分隔符,默认是换行符 ARGC 命令参数个数 ARGV命令行参数数组 FILENAME当前输入文件的文件名 FNR 当前记录数 管理科学与工程学科/共8页第3页
《Linux 操作系统》实验指导 / 实验七:通过 Shell 编程实现操作系统管理维护 管理科学与工程学科 / 共 8 页,第 3 页 八、实验步骤 1、实验场景与实验环境准备 本实验可根据实验室的具体条件,在单机虚拟化和云服务器两种场景下开展实验教学。 (1)单机虚拟化场景下开展实验教学 实验场景: 每位学生通过物理主机上的虚拟化软件 VMware workstation 安装 Ubuntu Server 虚拟操作系 统,虚拟操作系统 Ubuntu Server 配备固定 IP 地址,并开启 SSH 远程管理服务。 实验准备: ①启动虚拟化软件 VMware workstation 并附加上 Ubuntu Server 操作系统; ②配置 Ubuntu Server 操作系统的网络,并在虚拟主机上使用 Ping 命令进行网络连通性测 试; ③在虚拟主机上安装 openssh,ufw。开启 openssh 服务,并设置 ufw 的规则为允许 172.16.2.x/24 的主机访问,开放 22 端口。 ④虚拟主机后台运行,通过物理主机上的 PuTTY 软件,连接 Ubuntu Server 操作系统。 (2)云服务器场景下开展实验教学 实验场景: 在云服务器为学生安装部署 Linux 操作系统,每个操作系统配备固定 IP 地址,并开启 SSH 远 程管理服务,并把 root 用户权限和远程访问信息提供给学生。 实验准备: 学生使用 Windows 7 操作系统开展实验学习,使用 PuTTY 软件根据教师提供的云服务器访问 信息远程访问实验用的 Linux 操作系统。 2、文本处理工具——awk 和 sed (1)awk 的用法 任何 awk 语句都是由模式和动作组成。模式决定动作何时触发和触发事件,动作执行对输入 行的处理。awk 认为输入文件是结构化的,awk 将每个输入文件行定义为记录,行中的每个字符 串定义为域,域之间用空格、Tab 键或其他符号进行分隔,分隔域的符号叫做分隔符。 awk 常用内置变量如 1-3 awk 常见的内置变量表所示: 表 1-3 awk 常见的内置变量表 变量 含义 变量 含义 $0 当前记录 $1~$n 当前记录的第 n 个字段 FS 输入字段分隔符,默认是空格 NF 当前记录中的字段个数 NR 已经读出的记录数 RS 输入记录分隔符 OFS 输出域分隔符,默认是空格 ORS 输出记录分隔符,默认是换行符 ARGC 命令参数个数 ARGV 命令行参数数组 FILENAME 当前输入文件的文件名 FNR 当前记录数
红inⅸ操作系统》实验指导/实验七:通过Shl编程实现操作系统管理维护4 RSTART被匹配函数匹配的字符串首 RLENGTH被匹配函数匹配的字符串长度 ①在屏幕中输出etc/ passwd文件 awk'iprint $of'/etc/passwd ②在屏幕中输出系统中所有用户名 k-F:'iprint $l)/etc/passw ③在屏幕中输出第一行的最后一个字段 awk-F: 'NR=lprint $NF)/etc/passwd awk也支持正则表达式、关系运算符、逻辑运算符、算数运算符、控制语句、管道流河 格式化输出。 ①在屏幕中输出/ etc/passwd文件下不是以root开头的前三行数据 awk-F: !/root/print so,/etc/passwd head -3 ②在屏幕中输出 etc/passwd文件下uid等于1000的用户名 0o print $1;/etc/passwd ③在屏幕中输出系统中所有系统用户的信息 awk-F: $31=0&& $3 <500(print $o) '/etc/passwd ④在屏幕中输出用户名、UID、用户类型 awk-F:'"{if($3=0){ print$1"的UID是"$3",用户类型为超级用户"} else if ($3>500{prnt$"的UID是"$3",用户类型为普通用户"}else{ print$1"的 UID是"$3",用户类型为系统用户"}}/ etc/passwd ⑤在屏幕中格式化输出用户名、UID、用户组目录 awk-F: 'printf"%-20s%-10s%sIn"1,$3, $6,' /etc/passwd (2)sed的用法 sed可对文件中的行内容进行删除、改变、添加、插入、交换等操作。sed总是以行对输 入进行处理,并且sed处理的不是原文件而是原文件的拷贝 sed命令行格式为: sed [options]' command' file, sed常见的命令如表1-sed常见的命令 表所示: 表1-4sd常见的命令表 变量 含义 变量 含义 在当前行后添加一行或多行内容 c 用新文本替换当前行中的文本 adhq 删除行 在当前行之前插入文本 已经读出的记录数 H 输入记录分隔符 结束或退出sed r 在文件中读取输入行 对所选行以外的行应用所有命令 S 字符串替换 打印当前行号 表示把行写入一个文件 ①在屏幕中输出除第一行的所有文本内容 sed'ld' /etc/passwd ②在屏幕中输出第二行到最后一行的内容 sed-n 2, Sp/etc/passwd 管理科学与工程学科/共8页第4页
《Linux 操作系统》实验指导 / 实验七:通过 Shell 编程实现操作系统管理维护 管理科学与工程学科 / 共 8 页,第 4 页 RSTART 被匹配函数匹配的字符串首 RLENGTH 被匹配函数匹配的字符串长度 ①在屏幕中输出/etc/passwd 文件 awk '{print $0}' /etc/passwd ②在屏幕中输出系统中所有用户名 awk -F : '{print $1}' /etc/passwd ③在屏幕中输出第一行的最后一个字段 awk -F: 'NR==1{print $NF}' /etc/passwd awk 也支持正则表达式、关系运算符、逻辑运算符、算数运算符、控制语句、管道流河 格式化输出。 ①在屏幕中输出/etc/passwd 文件下不是以 root 开头的前三行数据 awk -F : '!/^root/{print $0}' /etc/passwd|head -3 ②在屏幕中输出/etc/passwd 文件下 uid 等于 1000 的用户名 awk -F: '$3 == 1000 {print $1}' /etc/passwd ③在屏幕中输出系统中所有系统用户的信息 awk -F: '$3 !=0 && $3 <500 {print $0}' /etc/passwd ④在屏幕中输出用户名、UID、用户类型 awk -F : '{ if ($3 == 0) {print $1"的 UID 是"$3",用户类型为超级用户"} else if ($3 > 500) {print $1"的 UID 是"$3",用户类型为普通用户"} else { print $1"的 UID 是"$3",用户类型为系统用户"} }' /etc/passwd ⑤在屏幕中格式化输出用户名、UID、用户组目录 awk -F : '{printf " %-20s %-10s %s\n",$1,$3,$6}' /etc/passwd (2)sed 的用法 sed 可对文件中的行内容进行删除、改变、添加、插入、交换等操作。sed 总是以行对输 入进行处理,并且 sed 处理的不是原文件而是原文件的拷贝。 sed 命令行格式为:sed [options] ' command' file。sed 常见的命令如表 1-4 sed 常见的命令 表所示: 表 1-4 sed 常见的命令表 变量 含义 变量 含义 a\ 在当前行后添加一行或多行内容 c\ 用新文本替换当前行中的文本 d 删除行 i\ 在当前行之前插入文本 h 已经读出的记录数 H 输入记录分隔符 q 结束或退出 sed r 在文件中读取输入行 ! 对所选行以外的行应用所有命令 s 字符串替换 = 打印当前行号 w 表示把行写入一个文件 ①在屏幕中输出除第一行的所有文本内容 sed '1d' /etc/passwd ②在屏幕中输出第二行到最后一行的内容 sed -n '2,$p' /etc/passwd
Lmx操作系统)》实验指导/实验七:通过Sml编程实现操作系统管理维护5 ③在屏幕中输出etc/ passwd文件下包含root的行 sed-n/root/p/etc/passwd ④在 etc/passwd文件中的第一行后增加两行内容 sed'la testintest'/etc/passwd head -n 3 ⑤把etc/ passwd文件中第一行root字符串替换为 admin seds/root/admin/g /etc/passwd head -n 1 要求 (1)请编写Shel程序,根据本班上学期的期末成绩单进行计算,程序运行结果为在屏幕中 输出本班平均成绩前10名学生的学号,平均分。 (2)请编写Shel程序,根据本班上学期的期未成绩单进行计算,程序运行结果为在屏幕中 输出本班每科成绩最高的学生的学号,科目、成绩。 请根据上述2个要求,进行具体实验,并将Shel程序填写到实验报告册中, 成绩单内容格式为 2080001,张三,语文,80,数学,75,英语,80 2080002,李四,语文,82,数学,80,英语,75 3、通过awk、sed实现系统维护 (1)查询 apache日志文件里访问量前十的P地址,并按从多到少排列 cat access log awk(print $Il sort uniq-c sort-n-r head-n 10 (2)查看访问次数最多的网页 cat access log awk'iprint $7)luniq-c I sort -n-r head-n 20 要求 (1)请编写Shel程序,对指定目录/ar/www下的所有文件进行操作,程序运行结果为在 屏幕中输出文件总数以及每个文件的文件名、文件大小。 请根据上述要求,进行具体实验,并将She程序填写到实验报告册中。 4、计划任务的相关简介 (1)cron的运行原理 Linux上周期性任务通常都是由cron这个守护进程完成的,它随系统启动而启动。当cron启 动时,它会读取配置文件,并把信息保存在内存中。每过一分钟,cron重新检查配置文件,并执 行这一分钟内安排的任务。 cron启动命令 sudo /etc/init. d/cron start #启动cron sudo /etc/init. d/cron stop #停止cron sudo /etc/init. d/cron restart #重新启动cron (2)管理用户的cron计划任务 用户提交的 crontab文件需要得到系统管理员的认可。为此,管理员需要建立!etc/ cron allow 和 /etc/crondeny文件 etc/ cron allow文件列出了可以提交 crontab的用户,与此相反, /etc/crondeny列出了不可以 提交 crontab的用户。文件的格式非常简单:每行一个用户名。 (3)理解cron配置文件 在cron配置文件的最后一部分是管理员定制计划任务的地方。每一行代表一条任务计划,其 管理科学与工程学科/共8页第5页
《Linux 操作系统》实验指导 / 实验七:通过 Shell 编程实现操作系统管理维护 管理科学与工程学科 / 共 8 页,第 5 页 ③在屏幕中输出/etc/passwd 文件下包含 root 的行 sed -n '/root/p' /etc/passwd ④在/etc/passwd 文件中的第一行后增加两行内容 sed '1a test\ntest' /etc/passwd | head -n 3 ⑤把/etc/passwd 文件中第一行 root 字符串替换为 admin sed 's/root/admin/g' /etc/passwd | head -n 1 要求: (1)请编写 Shell 程序,根据本班上学期的期末成绩单进行计算,程序运行结果为在屏幕中 输出本班平均成绩前 10 名学生的学号,平均分。 (2)请编写 Shell 程序,根据本班上学期的期末成绩单进行计算,程序运行结果为在屏幕中 输出本班每科成绩最高的学生的学号,科目、成绩。 请根据上述 2 个要求,进行具体实验,并将 Shell 程序填写到实验报告册中。 成绩单内容格式为: 2080001,张三,语文,80,数学,75,英语,80 2080002,李四,语文,82,数学,80,英语,75 3、通过 awk、sed 实现系统维护 (1)查询 apache 日志文件里访问量前十的 IP 地址,并按从多到少排列 cat access.log | awk ' {print $1}' | sort | uniq -c | sort -n -r | head –n 10 (2)查看访问次数最多的网页 cat access.log | awk '{print $7}'|uniq -c | sort -n -r | head -n 20 要求: (1)请编写 Shell 程序,对指定目录/var/www 下的所有文件进行操作,程序运行结果为在 屏幕中输出文件总数以及每个文件的文件名、文件大小。 请根据上述要求,进行具体实验,并将 Shell 程序填写到实验报告册中。 4、计划任务的相关简介 (1)cron 的运行原理 Linux 上周期性任务通常都是由 cron 这个守护进程完成的,它随系统启动而启动。当 cron 启 动时,它会读取配置文件,并把信息保存在内存中。每过一分钟,cron 重新检查配置文件,并执 行这一分钟内安排的任务。 cron 启动命令 sudo /etc/init.d/cron start #启动 cron sudo /etc/init.d/cron stop #停止 cron sudo /etc/init.d/cron restart #重新启动 cron (2)管理用户的 cron 计划任务 用户提交的 crontab 文件需要得到系统管理员的认可。为此,管理员需要建立/etc/cron.allow 和/etc/cron.deny 文件。 /etc/cron.allow 文件列出了可以提交 crontab 的用户,与此相反,/etc/cron.deny 列出了不可以 提交 crontab 的用户。文件的格式非常简单:每行一个用户名。 (3)理解 cron 配置文件 在 cron 配置文件的最后一部分是管理员定制计划任务的地方。每一行代表一条任务计划,其