Linux系统自动化运维(Python版)(微课版)-项目1_第1页
Linux系统自动化运维(Python版)(微课版)-项目1_第2页
Linux系统自动化运维(Python版)(微课版)-项目1_第3页
Linux系统自动化运维(Python版)(微课版)-项目1_第4页
Linux系统自动化运维(Python版)(微课版)-项目1_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux系统自动化运维(Python版)(微课版)工业和信息化精品系列教材项目1

系统自动运维:从Shell到Python人民邮电出版社能力CAPACITY要求了解系统自动化运维的基本知识。了解Shell编程,掌握系统管理和运维的Shell编程。了解Python编程,掌握使用Python编写自动化运维程序的流程。掌握使用Python编程执行外部命令的方法。任务1.2使用Python提升系统自动化运维技能任务1.1从Shell编程开始系统自动化运维任务1.3使用Python执行外部命令任务1.1从Shell编程开始系统自动化运维任务说明01OPTION02OPTION03OPTION了解系统自动化运维的基本知识了解Shell及其编程的基本知识准备系统自动化运维的实验环境04OPTION05OPTION掌握系统管理类Shell编程掌握系统运维类Shell编程任务1.1从Shell编程开始系统自动化运维相关知识1.1.1初识系统自动化运维传统运维方式面临的挑战

效率低容易失误被动运维缺乏流程化和标准化的运维机制任务1.1从Shell编程开始系统自动化运维相关知识1.1.1初识系统自动化运维系统自动化运维主要工作内容系统自动化运维系统预备安装操作系统安装软件包初始化系统配置管理定制配置文件持续集成和持续交付远程管理服务器部署应用监控报警服务器可用性监控自动报警安全监控性能监控任务1.1从Shell编程开始系统自动化运维相关知识1.1.2Linux系统自动化运维的基本工具——Shell脚本什么是ShellShell提供了用户和系统交互的接口

。Shell是一个命令解释器,拥有内建的Shell命令集。Shell同时是一种编程语言。Shell脚本的特点Shell具有很多类似C语言和其他编程语言的特征。Shell脚本与批处理文件很相似,可以包含任意输入的Linux命令,包括命令行工具。Shell脚本是解释执行的,不需要编译。Shell编程最基本的功能之一就是汇集一些在命令行中输入的连续指令。任务1.1从Shell编程开始系统自动化运维相关知识1.1.2Linux系统自动化运维的基本工具——Shell脚本Shell脚本与Linux系统运维使用Shell脚本有助于提高运维工程师的工作效率。Linux系统提供了功能强大的文本处理命令行工具。Shell编程具有简单、便捷的优势,特别适合用来开发一些常见的系统脚本。Shell编程的步骤编写Shell脚本执行Shell脚本任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.1准备实验环境完成运维工作站的部署在Ubuntu系统中启用root账户(1)为root账户设置密码。(2)编辑/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf配置文件。(3)编辑/etc/pam.d/gdm-autologin文件。(4)编辑/etc/pam.d/gdm-password文件。(5)编辑/root/.profile文件。(6)重启系统就能够以root账户登录Ubuntu系统。任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.2编写Shell脚本批量创建Linux用户账户批量添加用户账户的Shell脚本#添加一个名为testers的用户组groupaddtestersif[$?-eq0];thenecho"添加用户组testers成功!"fi#创建10个用户账户,命名为tester01至tester10,并将其加入testers组foriin`seq-w110`douseradd-m-Gtesterstester$iif[$?-eq0];thenecho"添加用户账户tester$i成功!"fi#将每个用户账户的初始密码设置为其用户名,这是一种修改密码的非交互方式

echotester$i:tester$i|chpasswdif[$?-eq0];thenecho"用户账户tester$i的初始密码:tester$i"fidone任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.2编写Shell脚本批量创建Linux用户账户批量删除用户账户的Shell脚本#!/bin/bashforiin`seq-w110`douserdel-rtester$iif[$?-eq0];thenecho"删除用户账户tester$i成功!"fidonegroupdeltestersif[$?-eq0];thenecho"删除用户组testers成功!"fi任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.3编写Shell脚本批量检测主机在线状态#!/usr/bin/bash#定义3种颜色来区分主机在线状态redFont=""\033[1;31m"greenFont="\e[32m"whiteFont="\e[0m"whilereadhostdoforcountin{1..3}doping-c1-W1$host&>/dev/nullif[$?-eq0];then#echo命令以不同颜色显示内容需要使用-e选项

echo-e"${greenFont}"${host}主机${whiteFont}"正在运行"breakelsefail_count[$count]=$hostfidone任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.3编写Shell脚本批量检测主机在线状态if[${#fail_count[*]}-eq3];thenecho-e"${redFont}"${host}主机${whiteFont}"停止运行"unsetfail_count[*]fidone<host_listecho-e"${whiteFont}"任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.4编写Shell脚本一键安装JDK(1)创建安装目录。(2)将JDK压缩包解压缩到安装目录。(3)修改JDK版本的目录名。(4)检查/etc/profile文件中是否已有相应的环境变量,以解决脚本重复执行问题。(5)向/etc/profile文件中添加Java环境变量设置。(6)加载/etc/profile文件使环境变量生效。(7)检查安装是否成功。任务1.1从Shell编程开始系统自动化运维任务实现任务1.1.5编写Shell脚本监控Linux系统性能了解Linux系统性能数据的获取方法通过Linux系统的/proc伪文件系统来监控系统可以兼顾不同Linux发行版。/proc/stat文件提供系统进程整体的统计信息,包含所有CPU活动的信息。CPU时间=user+nice+system+idle+iowait+irq+softirqCPU使用率=(idle2-idle1)/(cpu2-cpu1)/proc/meminfo文件提供系统内存的使用信息。内存使用率=(MemTotal–MemFree-Inactive)/MemTotal任务1.1认识Linux和Ubuntu任务实现任务1.1.5编写Shell脚本监控Linux系统性能编写系统性能监控脚本#定义获取CPU使用率的函数#使用grep'cpu'过滤CPU总的使用情况,输出第2~第8个字段对应的时间#获取CPU空闲的时间(不包含I/O等待)#合计cpu_time1中各列的值#等5秒之后再测下一次CPU时间#计算CPU总的空闲时间#计算CPU总的使用时间#计算CPU使用率#定义获取内存使用率的函数#依次执行以上两个函数#设置百分比限额#CPU或内存使用率超出限制报警任务1.1认识Linux和Ubuntu任务实现任务1.1.5编写Shell脚本监控Linux系统性能使用Cron服务定时运行监控任务(1)为上述Shell脚本文件赋予执行权限。(2)执行crontab-e命令,进入Cron服务配置文件编辑界面。(3)在Cron服务配置文件编辑界面最后一行输入以下代码,然后保存并关闭该文件。*/2****/autoom/01start/sys_mon.sh(4)执行crontab-l命令检查Cron服务配置文件的内容。(5)验证监控任务的定时运行。(6)修改sys_mon.sh脚本,在其中添加获取脚本文件所在的目录的语句,并修改sysinfo.txt和warning.txt文件的路径到该目录下。任务1.2使用Python提升系统自动化运维技能任务1.1从Shell编程开始系统自动化运维任务1.3使用Python执行外部命令任务1.2使用Python提升系统自动化运维技能任务说明01OPTION02OPTION03OPTION了解系统自动化运维与Python编程了解Python的模块、包和库的概念学会搭建Python开发环境04OPTION掌握使用Python编写系统运维程序的流程任务1.2使用Python提升系统自动化运维技能相关知识1.2.1Python简介Python语法简洁、清晰,具有丰富和强大的库。Python最初被设计用于编写自动化脚本。Python使用优雅的语法,让编写的程序易于阅读。Python是一种解释型的编程语言。Python是一种面向对象的语言。Python易于扩展。Python是高级编程语言。Python适用面广。任务1.2使用Python提升系统自动化运维技能相关知识1.2.2Python的模块、包与库模块(Module)用来从逻辑上组织Python代码,将相关的代码归到一个模块能让代码更好用、更易读。包(Package)定义了一个由模块和子包组成的Python程序执行环境。包本质上就是一个分层次的文件目录,包括若干模块和若干子包。库(Library)是借用自其他编程语言的概念,通常是指具有相关功能模块的集合。在Python中,库可以是模块的形式,也可以是包的形式,实际是一个具有特定功能的代码组合,库中可以包含包、模块和函数。任务1.2使用Python提升系统自动化运维技能相关知识1.2.3Python与系统自动化运维Python特别适合运维工程师用来编程。Python可以用来开发复杂的运维软件、基于Web的管理工具和自动化运维平台。Python的标准库对操作系统的接口进行了封装,内置对POSIX以及其他常规操作工具的支持。Python程序相对于Shell脚本具有跨平台的优势。Python拥有大量的用于自动化运维的第三方库。运维工程师可以通过Python编程系统地整合多种运维工具和软件,还可以使用Python对运维常用的工具或平台进行二次开发。Python具有程序开发效率高的优势。任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.1搭建Python开发环境安装Python查验预装的版本创建一个python符号链接ln-s/usr/bin/python3/usr/bin/python安装和配置Python包管理器安装Python包管理器aptinstallpython3-pip更改配置统一指定pip安装源pipconfigsetglobal.index-url/pypi/simple/pipconfigsetglobal.extra-index-url/simple/任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.1搭建Python开发环境创建和管理Python虚拟环境(1)安装venv模块。root@autowks:~#aptinstallpython3.8-venv(2)在当前目录下创建一个虚拟环境。root@autowks:~#python3-mvenvtest-venv(3)激活虚拟环境。root@autowks:~#sourcetest-venv/bin/activate(test-venv)root@autowks:~#(4)试用虚拟环境。(5)关闭虚拟环境。在指定虚拟环境下完成任务后,可以执行以下命令关闭虚拟环境。(test-venv)root@autowks:~#deactivateroot@autowks:~#任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.1搭建Python开发环境在Ubuntu系统中安装PyCharmPyCharm版本专业版PyCharmProfessional社区版即PyCharmCommunityEditionPyCharm安装使用Snap安装PyCharm社区版简称PyCharmCE)任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.1搭建Python开发环境PyCharm初始化设置定制PyCharm选装功能性插件任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.2编写Python程序监控Linux系统性能实现思路使用Python脚本从/proc伪文件系统读取性能数据。通过/proc/net/dev实时获取网络接口及统计信息。编写Python脚本从/proc伪文件系统获取CPU使用率、内存使用率和网络接口收发数据量。任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.2编写Python程序监控Linux系统性能创建Python项目项目创建新创建的Python项目任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.2编写Python程序监控Linux系统性能编写Python程序importreimporttime'''菜单函数'‘’defmenu():'''主函数'''defmain():'''获取CPU使用率的函数'''defget_cpu_usage():'''获取内存使用率的函数'''defget_mem_usage():'''获取网络接口收发数据量的函数'''defget_net_data():if__name__=="__main__":main()任务1.2使用Python提升系统自动化运维技能任务实现任务1.2.2编写Python程序监控Linux系统性能运行测试运行Python脚本

实际测试脚本任务1.2使用Python提升系统自动化运维技能任务1.1从Shell编程开始系统自动化运维任务1.3使用Python执行外部命令任务1.3使用Python执行外部命令任务说明01OPTION02OPTION03OPTION了解subprocess模块的基本用法掌握使用subprocess模块编程执行外部命令的方法编程实现批量检测主机在线状态04OPTION编写通用的外部命令执行函数任务1.3使用Python执行外部命令相关知识1.3.1subprocess模块简介subprocess模块替代Python内置的OS模块提供的调用外部进程的函数来运行和创建新的系统进程。subprocess模块可以用于执行外部命令,创建一个新的进程让其去执行其他程序。subprocess模块提供一些管理标准流和管道的工具,从而实现进程间的通信。任务1.3使用Python执行外部命令相关知识1.3.2subprocess模块的便利函数基本用法subprocess.run(args,*,stdin=None,input=None,stdout=None,stderr=None,capture_output=False,shell=False,cwd=None,timeout=None,check=False,encoding=None,errors=None,text=None,env=None,universal_newlines=None,**other_popen_kwargs)该函数运行由args参数指定的外部命令。该函数执行后会生成新进程,我们可以连接到新进程的输入、输出和错误处理管道上,发送和接收数据以及处理错误代码,获取进程的返回值。执行该函数,待命令执行完成后返回CompletedProcess对象。任务1.3使用Python执行外部命令相关知识1.3.3subprocess模块的Popen类构造函数Popen对象的方法Popen对象的属性Popen类的用法示例任务1.3使用Python执行外部命令任务实现任务1.3.1使用subprocess模块编程批量检测主机在线状态程序importsubprocess#定义颜色来区分主机在线状态,颜色格式:\033[显示方式;前景色;背景色mredFont="\033[1;31m"#红色greenFont="\033[1;32m"#绿色defautFont="\033[0m"#结束颜色格式的输出withopen("host_list","r")asf:forhostinf:#逐行读取文本文件中的主机

host=host.strip()#每行末尾有隐藏的换行符\n,使用strip()函数清除

foriinrange(3):result=subprocess.run(['ping','-c1','-W1',str(host)],stdout=subprocess.PIPE,check=False)ifresult.returncode==0:#判断返回码

print(greenFont+host+'主机'+defautFont+'正在运行')breakelse:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论