python3学习笔记一
install 安装软件包
download 下载安装包
uninstall 卸载安装包
freeze 按照req uirements 格式输出安装包,可以到其他服务器上执行pip install -r requirements.txt 直接安装软件
list 列出当前系统中的安装包
show 查看安装包的信息,包括版本、依赖、许可证、作者、主页等信息
check pip 9.0.1提供的最新子命令,检查安装包的依赖是否完整
search 查找安装包
wheel 打包软件到w h e ll 格式
hash 计算安装包的hash 值
completion 生成命令补全配置
help 获取pi p 和子命令的帮助信息
表4-2 正则表达式的基本语法
正则表达式 描述 示例
^ 行起始标记 ^imp匹配以imp起始的行
$ 行尾标记 import$匹配以import结尾的行
. 匹配任意一个字符 它只能匹配单个字符,但是可以匹配任意字符,如linu.可以匹配linux与linus
[] 匹配包含在[字符]之中的任意字符 coo[kl]能够匹配cook或cool
[^] 匹配包含在[〈字符] 之外的任意字符 9[^01]可以匹配92、93,但是不匹配91或90
[-] 匹配[]中指定范围内的任意一个字符 [1-5]匹配l~5的任意一个数字,[a-z]匹配任意一个小写字母
? 匹配之前项的l 次或0 次 hel?o 匹配hello或helo,但是不能匹配helllo
+ 匹配之前项的l 次或多次 hel+匹配hel和hell,但是不能匹配he.
* 匹配之前项的0 次或多次 hel*匹配he、hel、hell
{n} 匹配之前的项n 次 [0-9]{3}匹配任意一个三位数
{n, } 之前的项至少需要匹配n 次 [0-9]{3,}匹配任意一个三位数或更多的数字
{n , m } 指定之前的项所必须匹配的最小次数和最大次数 [0-9]{2,5}匹配从两位数到五位数之间的任意一个数字
使用fileinput ,可以依次读取命令行参数中给出的多个文件。也就是说, fileinput 会遍历sys.argv[l :]列表,并按行依次读取列表中的文件。如果该列表为空, 则fileinput 默认读取标准输入中的内容。
filename : 当前正在读取的文件名;
fileno :文件的描述符;
filelineno :正在读取的行是当前文件的第几行;
isfirstline : 正在读取的行是否当前文件的第一行;
isstdin fileinput :正在读取文件还是直接从标准输入读取内容。
import fileinput
for 1 l口e in fileinput . 工nput( ):
print (1 ine , end= ”” )
sys .stdout 与sys.stderr 向标准输出和错误输出中输出内容
使用getpass 库读取密码
使用ConfigParse 解析配置文件
argparse 模块
logging 模块提供了日志相关的功能
使用click 解析命令行参数
字符串函数
查找类函数
format 函数
re 模块
filecmp 模块最简单的函数是cmp 函数,该函数用来比较两个文件是否相同
filecmp 目录下还有一个名为cmpfiles 的函数,该函数用来同时比较两个不同目录下的多个文件,并且返回一个三元组,分别包含相同的文件、不同的文件和无法比较的文件
hashlib 模块 MD5 校验和比较
tarfile 库读取与创建tar 包
zipfile 库创建和读取zip 压缩包
shutil 创建压缩包
subprocess 模块的便利函数
subprocess 模块的Po pen 类
交E式监控工具glances
pyinotify 监控文件系统变化
openpyxl 是一个读写Exc e l 2010 ( xlsx/xlsm )文档的Python 库,如果要处理更早格式的Excel 文档,需要用到另外的库
使用PdfFileWriter 创建PDF 文件
yagmail 发送邮件
Fabric 使用入门
ansible使用
表3-1 logging 模块中日志级别及其含义
日志级别 权重 含义
CRITICAL 50 严重错误,表明软件已不能继续运行了
ERROR 40 发生了严重的错误,必须马上处理
WARNING 30 应用程序可以容忍这些信息,软件还是在正常工作,不过它们应该被检查及修复,否则将在不久的将来发生问题
INFO 20 证明事情按预期工作, 突出强调应用程序的运行过程
DEBUG 10 详细信息,只有开发人员调试程序时才需要关注的事情
Logger : 日志记录器,是应用程序中能直接使用的接口;
Handler : 日志处理器,用以表明将日志保存到什么地方以及保存多久;
Formatter : 格式化,用以配置日志的输出格式。
字符串函数
2. 与大小写相关的方法
以下几个函数是与字符大小写相关的字符串处理函数:
upper :将字符串转换为大写;
lower :将字符串转换为小写;
isupper :判断字符串是否都为大写;
islower :判断字符串是否都为小写;
swap case :将字符串中的大写转换为小写、小写转换为大写;
capitalize :将首字母转换为大写;
istitle :判断字符串是不是一个标题;
查找类函数
find :查找子串出现在字符串中的位置,如果查找失败,返回- 1 j
index : 与find 函数类似,如果查找失败,抛出ValueError 异常;
rfind : 与find 函数类似,区别在于rfind 是从后向前查找;
rindex :与index 函数类似,区别在于rindex 是从后向前查找。
format 函数
fill :表示显示时需要填充的字符,默认以空格填充;
align :表示输出结果的对齐方式,“〈”表示左对齐,“>”表示右对齐,“〈”表示居中;
sign :仅仅对数字起作用,表示在显示数字时, 是否需要显示“+”和“-”号,默认取值是“-”,表示在显示正数时,不会显示“+”号,在显示负数时,显示“一号,当sign 为一个空格时(“勺,表示“ -”和数字之间需要保留一个空格;
width :表示显示的宽度;
precision : 表示显示的精度;
type : 表示显示的类型。
re 模块
re.findall 该函数在字符串中查找模式匹配
match match 函数用以匹配字符串的开始部分,如果模式匹配成功, 返回一个SRE Match 类型的对象,如果模式匹配失败,返回一个None
re.sub
re.split re 模块的split 函数与Python 字符串的split 函数功能一样,都是将一个字符串拆分成子串的列表。
zipfile 库创建和读取zip 压缩包
ZipFile 的常用方法如下:
namelist : 返回zip 文件中包含的所有文件和文件夹的字符串列表;
extract : 从zip 文件中提取单个文件;
extractall :从zip 文件中提取所有文件。
SSHClient 类常用的几个方法:
1 ) connect : connect 方法实现远程服务器连接与认证,对于该方法, 只有hostname 是必传参数。
2 ) set_ missing_ host_ key _policy : 设置远程服务器没有在know_hosts 文件中记录时的应对策略。目前支持三种策略,分别是AutoAddPolicy 、RejectPolicy ( 默认策略)与WarningPolicy ,分别表示自动添加服务器到know_hosts 文件、拒绝本次连接、警告并将服务器添加到know hosts 文件中。
3 ) exec command :在远程服务器执行Linux 命令的方法。
4 ) open_s句:在当前ssh 会话的基础上创建一个sftp 会话
SFTPClient 类常用的几个方法:
put :上传本地文件到远程服务器;
get :从远程服务器下载文件到本地;
mkdir :在远程服务器上创建目录;
remove :删除远程服务器中的文件;
rmdir :删除远程服务器中的目录;
rename :重命名远程服务器中的文件或目录;
stat : 获取远程服务器中文件的详细信息;
listdir :列出远程服务器中指定目录下的内容。
fabfile之常用参数
fabfile.py文件
-l #显示定义好的任务函数名
-f #指定fab入口文件,默认入口文件名为fabfile.py
-f #指定网关(中转)设备,比如堡垒机环境,填写堡垒机IP即可
-H #指定目标主机,多台主机用‘,’号分隔
-p #远程账号的密码,fab执行时默认使用root账户
-P #以异步并行方式运行多主机任务,默认为串行运行
-R #指定role(角色),以角色名区分不同业务组设备
-t #设置设备连接超时时间(秒)
-T #设置远程主机命令执行超时时间(秒)
-w #当命令执行失败,发出警告,而非默认中止任务。
fabfile之env对象
env.hosts #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=['192.168.1.21','192.168.1.22']
env.exclude_hosts #排除指定主机,如env.exclude_hosts=['192.168.1.21']
env.user #定义用户名,如env.user='root'
env.port #定义端口,默认为22,如env.port='22'
env.password #定义密码,如env.password='123456'
env.passwords #定义多个密码,不同主机对应不同密码,如:env.passwords = {'root@192.168.1.21:22':'123456','root@192.168.1.22:22':'654321'}
env.gateway #定义网关(中转、堡垒机)IP,如env.gateway='192.168.1.23
env.roledefs #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {'webserver':['192.168.1.21','192.168.1.22'],'dbserver':['192.168.1.25','192.168.1.26']}
env.deploy_release_dir #自定义全局变量,格式:env. + '变量名称',如env.age,env.sex等
Fabric常用API
local #执行本地命令,如local('uname -s')
lcd #切换本地目录,如lcd('/home')
cd #切换远程目录
run #执行远程命令
sudo #sudo方式执行远程命令,如sudo('/etc/init.d/httpd start')
put #上次本地文件导远程主机,如put('/home/user.info','/data/user.info')
get #从远程主机下载文件到本地,如:get('/data/user.info','/home/user.info')
prompt #获得用户输入信息,如:prompt('please input user password:')
confirm #获得提示信息确认,如:confirm('Test failed,Continue[Y/N]?')
reboot #重启远程主机,如:reboot()
@task #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑
@runs_once #函数修饰符,标识的函数只会执行一次,不受多台主机影响
from __future__ import print __function__
ansible
/etc/ansible/hosts #ip默认配置文件
[webservers ]
web [1: 3].example.com #添加3台web服务器
cat /etc/ansible/ansible .cfg #服务器集合管理配置文件
[defaults]
remote__port= 2092
remote user= lmx
inventory = /home/lmx/hosts #指定hosts文件路径
表10-1 远程服务器匹配规则
规则 含义
192. 168.0.1 或web.example. com 匹配目标E 地址或服务器名,如果有多个IP 或服务器,使用‘:分隔
webservers 匹配目标组为webservers ,多个组使用“·”分隔
all 或'*' 如匹配所有服务器
webservers: !dbservers 匹配在webservers 中,不在dbservers 组中的服务器
webservers:&dbservers 匹配同时在web servers 组以及dbservers 组中的服务器
?.example.com 或192.168.* 使用通配符进行匹配
webservers [町, webservers[ l :], webservers[-1] 使用索引或切片操作的方式匹配组中的服务器
~(webldb ). *.example.com 以~开头的匹配,表示使用正则表达式匹配
fil e 模块中的重要选项:
path :指定文件/目录的路径;
recurse : 递归设置文件属性,只对目录有效;
group : 定义文件/ 目录的组;
mode : 定义文件/ 目录的权限;
owner : 定义文件/目录的所有者;
src :要被链接的源文件路径, 只应用于state 为link 的情况;
de s t : 被链接到的路径,只应用于state 为link 的情况;
force : 在两种情况下会强制创建软链接, 一种是源文件不存在但之后会建立的情况;
另一种是目标软链接已存在, 需要先取消之前的软链接,然后创建新的软链接, 默
认取值为no;
state : 该选项有多个取值,包括directory 、file 、link 、hard 、touch 、absent 。各个
取值的含义如下:取值为directory 时,如果目录不存在,创建目录;取值为file 时,
即使文件不存在也不会被创建;取值为link 时,创建软链接;取值为hard 时,创建
硬链接; 取值为touch 时, 如果文件不存在,创建一个新的文件,如果文件或目录已
存在,更新其最后访问时间和修改时间;取值为absent 时,删除目录、文件或链接。
ansib le-playbook 命令与ansib le 命令相同的命令行选项:
-T --timeout : 建立SSH 连接的超时时间;
--key-file --private-key : 建立SSH 连接的私钥文件;
-i --inventory-file :指定Inventory 文件,默认是/etc/ansible/ hosts;
-f --forks :并发执行的进程数,默认为5;
--list-hosts playbooks :匹配到服务器列表。
ansible-playbook 命令特有的一些选项:
--list-tasks : 列出任务列表;
--step : 每执行一个任务后停止,等待用户确认;
--syntax-check : 检查Playbook 的语法;
-C --check : 检查当前这个Playbook 是否会修改远程服务器,相当于预测Playbook