Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)-項(xiàng)目1_第1頁
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)-項(xiàng)目1_第2頁
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)-項(xiàng)目1_第3頁
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)-項(xiàng)目1_第4頁
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)-項(xiàng)目1_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)工業(yè)和信息化精品系列教材項(xiàng)目1

系統(tǒng)自動(dòng)運(yùn)維:從Shell到Python人民郵電出版社能力CAPACITY要求了解系統(tǒng)自動(dòng)化運(yùn)維的基本知識(shí)。了解Shell編程,掌握系統(tǒng)管理和運(yùn)維的Shell編程。了解Python編程,掌握使用Python編寫自動(dòng)化運(yùn)維程序的流程。掌握使用Python編程執(zhí)行外部命令的方法。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)1.3使用Python執(zhí)行外部命令任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)說明01OPTION02OPTION03OPTION了解系統(tǒng)自動(dòng)化運(yùn)維的基本知識(shí)了解Shell及其編程的基本知識(shí)準(zhǔn)備系統(tǒng)自動(dòng)化運(yùn)維的實(shí)驗(yàn)環(huán)境04OPTION05OPTION掌握系統(tǒng)管理類Shell編程掌握系統(tǒng)運(yùn)維類Shell編程任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維相關(guān)知識(shí)1.1.1初識(shí)系統(tǒng)自動(dòng)化運(yùn)維傳統(tǒng)運(yùn)維方式面臨的挑戰(zhàn)

效率低容易失誤被動(dòng)運(yùn)維缺乏流程化和標(biāo)準(zhǔn)化的運(yùn)維機(jī)制任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維相關(guān)知識(shí)1.1.1初識(shí)系統(tǒng)自動(dòng)化運(yùn)維系統(tǒng)自動(dòng)化運(yùn)維主要工作內(nèi)容系統(tǒng)自動(dòng)化運(yùn)維系統(tǒng)預(yù)備安裝操作系統(tǒng)安裝軟件包初始化系統(tǒng)配置管理定制配置文件持續(xù)集成和持續(xù)交付遠(yuǎn)程管理服務(wù)器部署應(yīng)用監(jiān)控報(bào)警服務(wù)器可用性監(jiān)控自動(dòng)報(bào)警安全監(jiān)控性能監(jiān)控任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維相關(guān)知識(shí)1.1.2Linux系統(tǒng)自動(dòng)化運(yùn)維的基本工具——Shell腳本什么是ShellShell提供了用戶和系統(tǒng)交互的接口

。Shell是一個(gè)命令解釋器,擁有內(nèi)建的Shell命令集。Shell同時(shí)是一種編程語言。Shell腳本的特點(diǎn)Shell具有很多類似C語言和其他編程語言的特征。Shell腳本與批處理文件很相似,可以包含任意輸入的Linux命令,包括命令行工具。Shell腳本是解釋執(zhí)行的,不需要編譯。Shell編程最基本的功能之一就是匯集一些在命令行中輸入的連續(xù)指令。任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維相關(guān)知識(shí)1.1.2Linux系統(tǒng)自動(dòng)化運(yùn)維的基本工具——Shell腳本Shell腳本與Linux系統(tǒng)運(yùn)維使用Shell腳本有助于提高運(yùn)維工程師的工作效率。Linux系統(tǒng)提供了功能強(qiáng)大的文本處理命令行工具。Shell編程具有簡(jiǎn)單、便捷的優(yōu)勢(shì),特別適合用來開發(fā)一些常見的系統(tǒng)腳本。Shell編程的步驟編寫Shell腳本執(zhí)行Shell腳本任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.1準(zhǔn)備實(shí)驗(yàn)環(huán)境完成運(yùn)維工作站的部署在Ubuntu系統(tǒng)中啟用root賬戶(1)為root賬戶設(shè)置密碼。(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)重啟系統(tǒng)就能夠以root賬戶登錄Ubuntu系統(tǒng)。任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.2編寫Shell腳本批量創(chuàng)建Linux用戶賬戶批量添加用戶賬戶的Shell腳本#添加一個(gè)名為testers的用戶組groupaddtestersif[$?-eq0];thenecho"添加用戶組testers成功!"fi#創(chuàng)建10個(gè)用戶賬戶,命名為tester01至tester10,并將其加入testers組foriin`seq-w110`douseradd-m-Gtesterstester$iif[$?-eq0];thenecho"添加用戶賬戶tester$i成功!"fi#將每個(gè)用戶賬戶的初始密碼設(shè)置為其用戶名,這是一種修改密碼的非交互方式

echotester$i:tester$i|chpasswdif[$?-eq0];thenecho"用戶賬戶tester$i的初始密碼:tester$i"fidone任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.2編寫Shell腳本批量創(chuàng)建Linux用戶賬戶批量刪除用戶賬戶的Shell腳本#!/bin/bashforiin`seq-w110`douserdel-rtester$iif[$?-eq0];thenecho"刪除用戶賬戶tester$i成功!"fidonegroupdeltestersif[$?-eq0];thenecho"刪除用戶組testers成功!"fi任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.3編寫Shell腳本批量檢測(cè)主機(jī)在線狀態(tài)#!/usr/bin/bash#定義3種顏色來區(qū)分主機(jī)在線狀態(tài)redFont=""\033[1;31m"greenFont="\e[32m"whiteFont="\e[0m"whilereadhostdoforcountin{1..3}doping-c1-W1$host&>/dev/nullif[$?-eq0];then#echo命令以不同顏色顯示內(nèi)容需要使用-e選項(xiàng)

echo-e"${greenFont}"${host}主機(jī)${whiteFont}"正在運(yùn)行"breakelsefail_count[$count]=$hostfidone任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.3編寫Shell腳本批量檢測(cè)主機(jī)在線狀態(tài)if[${#fail_count[*]}-eq3];thenecho-e"${redFont}"${host}主機(jī)${whiteFont}"停止運(yùn)行"unsetfail_count[*]fidone<host_listecho-e"${whiteFont}"任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.4編寫Shell腳本一鍵安裝JDK(1)創(chuàng)建安裝目錄。(2)將JDK壓縮包解壓縮到安裝目錄。(3)修改JDK版本的目錄名。(4)檢查/etc/profile文件中是否已有相應(yīng)的環(huán)境變量,以解決腳本重復(fù)執(zhí)行問題。(5)向/etc/profile文件中添加Java環(huán)境變量設(shè)置。(6)加載/etc/profile文件使環(huán)境變量生效。(7)檢查安裝是否成功。任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)實(shí)現(xiàn)任務(wù)1.1.5編寫Shell腳本監(jiān)控Linux系統(tǒng)性能了解Linux系統(tǒng)性能數(shù)據(jù)的獲取方法通過Linux系統(tǒng)的/proc偽文件系統(tǒng)來監(jiān)控系統(tǒng)可以兼顧不同Linux發(fā)行版。/proc/stat文件提供系統(tǒng)進(jìn)程整體的統(tǒng)計(jì)信息,包含所有CPU活動(dòng)的信息。CPU時(shí)間=user+nice+system+idle+iowait+irq+softirqCPU使用率=(idle2-idle1)/(cpu2-cpu1)/proc/meminfo文件提供系統(tǒng)內(nèi)存的使用信息。內(nèi)存使用率=(MemTotal–MemFree-Inactive)/MemTotal任務(wù)1.1認(rèn)識(shí)Linux和Ubuntu任務(wù)實(shí)現(xiàn)任務(wù)1.1.5編寫Shell腳本監(jiān)控Linux系統(tǒng)性能編寫系統(tǒng)性能監(jiān)控腳本#定義獲取CPU使用率的函數(shù)#使用grep'cpu'過濾CPU總的使用情況,輸出第2~第8個(gè)字段對(duì)應(yīng)的時(shí)間#獲取CPU空閑的時(shí)間(不包含I/O等待)#合計(jì)cpu_time1中各列的值#等5秒之后再測(cè)下一次CPU時(shí)間#計(jì)算CPU總的空閑時(shí)間#計(jì)算CPU總的使用時(shí)間#計(jì)算CPU使用率#定義獲取內(nèi)存使用率的函數(shù)#依次執(zhí)行以上兩個(gè)函數(shù)#設(shè)置百分比限額#CPU或內(nèi)存使用率超出限制報(bào)警任務(wù)1.1認(rèn)識(shí)Linux和Ubuntu任務(wù)實(shí)現(xiàn)任務(wù)1.1.5編寫Shell腳本監(jiān)控Linux系統(tǒng)性能使用Cron服務(wù)定時(shí)運(yùn)行監(jiān)控任務(wù)(1)為上述Shell腳本文件賦予執(zhí)行權(quán)限。(2)執(zhí)行crontab-e命令,進(jìn)入Cron服務(wù)配置文件編輯界面。(3)在Cron服務(wù)配置文件編輯界面最后一行輸入以下代碼,然后保存并關(guān)閉該文件。*/2****/autoom/01start/sys_mon.sh(4)執(zhí)行crontab-l命令檢查Cron服務(wù)配置文件的內(nèi)容。(5)驗(yàn)證監(jiān)控任務(wù)的定時(shí)運(yùn)行。(6)修改sys_mon.sh腳本,在其中添加獲取腳本文件所在的目錄的語句,并修改sysinfo.txt和warning.txt文件的路徑到該目錄下。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)1.3使用Python執(zhí)行外部命令任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)說明01OPTION02OPTION03OPTION了解系統(tǒng)自動(dòng)化運(yùn)維與Python編程了解Python的模塊、包和庫的概念學(xué)會(huì)搭建Python開發(fā)環(huán)境04OPTION掌握使用Python編寫系統(tǒng)運(yùn)維程序的流程任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能相關(guān)知識(shí)1.2.1Python簡(jiǎn)介Python語法簡(jiǎn)潔、清晰,具有豐富和強(qiáng)大的庫。Python最初被設(shè)計(jì)用于編寫自動(dòng)化腳本。Python使用優(yōu)雅的語法,讓編寫的程序易于閱讀。Python是一種解釋型的編程語言。Python是一種面向?qū)ο蟮恼Z言。Python易于擴(kuò)展。Python是高級(jí)編程語言。Python適用面廣。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能相關(guān)知識(shí)1.2.2Python的模塊、包與庫模塊(Module)用來從邏輯上組織Python代碼,將相關(guān)的代碼歸到一個(gè)模塊能讓代碼更好用、更易讀。包(Package)定義了一個(gè)由模塊和子包組成的Python程序執(zhí)行環(huán)境。包本質(zhì)上就是一個(gè)分層次的文件目錄,包括若干模塊和若干子包。庫(Library)是借用自其他編程語言的概念,通常是指具有相關(guān)功能模塊的集合。在Python中,庫可以是模塊的形式,也可以是包的形式,實(shí)際是一個(gè)具有特定功能的代碼組合,庫中可以包含包、模塊和函數(shù)。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能相關(guān)知識(shí)1.2.3Python與系統(tǒng)自動(dòng)化運(yùn)維Python特別適合運(yùn)維工程師用來編程。Python可以用來開發(fā)復(fù)雜的運(yùn)維軟件、基于Web的管理工具和自動(dòng)化運(yùn)維平臺(tái)。Python的標(biāo)準(zhǔn)庫對(duì)操作系統(tǒng)的接口進(jìn)行了封裝,內(nèi)置對(duì)POSIX以及其他常規(guī)操作工具的支持。Python程序相對(duì)于Shell腳本具有跨平臺(tái)的優(yōu)勢(shì)。Python擁有大量的用于自動(dòng)化運(yùn)維的第三方庫。運(yùn)維工程師可以通過Python編程系統(tǒng)地整合多種運(yùn)維工具和軟件,還可以使用Python對(duì)運(yùn)維常用的工具或平臺(tái)進(jìn)行二次開發(fā)。Python具有程序開發(fā)效率高的優(yōu)勢(shì)。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.1搭建Python開發(fā)環(huán)境安裝Python查驗(yàn)預(yù)裝的版本創(chuàng)建一個(gè)python符號(hào)鏈接ln-s/usr/bin/python3/usr/bin/python安裝和配置Python包管理器安裝Python包管理器aptinstallpython3-pip更改配置統(tǒng)一指定pip安裝源pipconfigsetglobal.index-url/pypi/simple/pipconfigsetglobal.extra-index-url/simple/任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.1搭建Python開發(fā)環(huán)境創(chuàng)建和管理Python虛擬環(huán)境(1)安裝venv模塊。root@autowks:~#aptinstallpython3.8-venv(2)在當(dāng)前目錄下創(chuàng)建一個(gè)虛擬環(huán)境。root@autowks:~#python3-mvenvtest-venv(3)激活虛擬環(huán)境。root@autowks:~#sourcetest-venv/bin/activate(test-venv)root@autowks:~#(4)試用虛擬環(huán)境。(5)關(guān)閉虛擬環(huán)境。在指定虛擬環(huán)境下完成任務(wù)后,可以執(zhí)行以下命令關(guān)閉虛擬環(huán)境。(test-venv)root@autowks:~#deactivateroot@autowks:~#任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.1搭建Python開發(fā)環(huán)境在Ubuntu系統(tǒng)中安裝PyCharmPyCharm版本專業(yè)版PyCharmProfessional社區(qū)版即PyCharmCommunityEditionPyCharm安裝使用Snap安裝PyCharm社區(qū)版簡(jiǎn)稱PyCharmCE)任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.1搭建Python開發(fā)環(huán)境PyCharm初始化設(shè)置定制PyCharm選裝功能性插件任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.2編寫Python程序監(jiān)控Linux系統(tǒng)性能實(shí)現(xiàn)思路使用Python腳本從/proc偽文件系統(tǒng)讀取性能數(shù)據(jù)。通過/proc/net/dev實(shí)時(shí)獲取網(wǎng)絡(luò)接口及統(tǒng)計(jì)信息。編寫Python腳本從/proc偽文件系統(tǒng)獲取CPU使用率、內(nèi)存使用率和網(wǎng)絡(luò)接口收發(fā)數(shù)據(jù)量。任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.2編寫Python程序監(jiān)控Linux系統(tǒng)性能創(chuàng)建Python項(xiàng)目項(xiàng)目創(chuàng)建新創(chuàng)建的Python項(xiàng)目任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.2編寫Python程序監(jiān)控Linux系統(tǒng)性能編寫Python程序importreimporttime'''菜單函數(shù)'‘’defmenu():'''主函數(shù)'''defmain():'''獲取CPU使用率的函數(shù)'''defget_cpu_usage():'''獲取內(nèi)存使用率的函數(shù)'''defget_mem_usage():'''獲取網(wǎng)絡(luò)接口收發(fā)數(shù)據(jù)量的函數(shù)'''defget_net_data():if__name__=="__main__":main()任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)實(shí)現(xiàn)任務(wù)1.2.2編寫Python程序監(jiān)控Linux系統(tǒng)性能運(yùn)行測(cè)試運(yùn)行Python腳本

實(shí)際測(cè)試腳本任務(wù)1.2使用Python提升系統(tǒng)自動(dòng)化運(yùn)維技能任務(wù)1.1從Shell編程開始系統(tǒng)自動(dòng)化運(yùn)維任務(wù)1.3使用Python執(zhí)行外部命令任務(wù)1.3使用Python執(zhí)行外部命令任務(wù)說明01OPTION02OPTION03OPTION了解subprocess模塊的基本用法掌握使用subprocess模塊編程執(zhí)行外部命令的方法編程實(shí)現(xiàn)批量檢測(cè)主機(jī)在線狀態(tài)04OPTION編寫通用的外部命令執(zhí)行函數(shù)任務(wù)1.3使用Python執(zhí)行外部命令相關(guān)知識(shí)1.3.1subprocess模塊簡(jiǎn)介subprocess模塊替代Python內(nèi)置的OS模塊提供的調(diào)用外部進(jìn)程的函數(shù)來運(yùn)行和創(chuàng)建新的系統(tǒng)進(jìn)程。subprocess模塊可以用于執(zhí)行外部命令,創(chuàng)建一個(gè)新的進(jìn)程讓其去執(zhí)行其他程序。subprocess模塊提供一些管理標(biāo)準(zhǔn)流和管道的工具,從而實(shí)現(xiàn)進(jìn)程間的通信。任務(wù)1.3使用Python執(zhí)行外部命令相關(guān)知識(shí)1.3.2subprocess模塊的便利函數(shù)基本用法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)該函數(shù)運(yùn)行由args參數(shù)指定的外部命令。該函數(shù)執(zhí)行后會(huì)生成新進(jìn)程,我們可以連接到新進(jìn)程的輸入、輸出和錯(cuò)誤處理管道上,發(fā)送和接收數(shù)據(jù)以及處理錯(cuò)誤代碼,獲取進(jìn)程的返回值。執(zhí)行該函數(shù),待命令執(zhí)行完成后返回CompletedProcess對(duì)象。任務(wù)1.3使用Python執(zhí)行外部命令相關(guān)知識(shí)1.3.3subprocess模塊的Popen類構(gòu)造函數(shù)Popen對(duì)象的方法Popen對(duì)象的屬性Popen類的用法示例任務(wù)1.3使用Python執(zhí)行外部命令任務(wù)實(shí)現(xiàn)任務(wù)1.3.1使用subprocess模塊編程批量檢測(cè)主機(jī)在線狀態(tài)程序importsubprocess#定義顏色來區(qū)分主機(jī)在線狀態(tài),顏色格式:\033[顯示方式;前景色;背景色mredFont="\033[1;31m"#紅色greenFont="\033[1;32m"#綠色defautFont="\033[0m"#結(jié)束顏色格式的輸出withopen("host_list","r")asf:forhostinf:#逐行讀取文本文件中的主機(jī)

host=host.strip()#每行末尾有隱藏的換行符\n,使用strip()函數(shù)清除

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

print(greenFont+host+'主機(jī)'+defautFont+'正在運(yùn)行')breakelse:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論