Python与系统日常管理

大多时间都在linux下工作,虽说不算系统管理员,也免不了要处理许多系统相关的东西。对linux还算熟悉,偶尔也在公司客串系统管理员的角色。于是就免不了要写许多自动化脚本的东西,来方便系统日常管理了。

bash脚本挺让人恶心的,属于dirty and quick一类。而Python语法清新可人,Python与系统的交互也极其便利,写自动化脚本再合适不过。

在此就分享些自己在写自动化脚本时中意的Python工具:

1、sh

sh is a full-fledged subprocess replacement for Python 2.6 - 3.4 that allows you to call any program as if it were a function 使用sh可以用 Python 函数的语法去调用 shell 命令,比subprocess舒服多了

有了sh,就可以方便地用python写逻辑,而与系统的交互依然使用shell指令

sh并没有自己去实现一遍系统指令(也不现实),sh的原理很有趣,是通过ModuleType来实现的。有兴趣的同学可以参考源码

from sh import tail

def process_log_line(line):    if "ERROR" in line:
        send_an_email_to_support(line)

process = tail("-f", "info.log", _out=process_log_line)

# ... do other stuff here ...

process.wait()

2、*path.py*

简化文件系统相关操作。与文件系统的相关操作,在python中有些分散,path.py把它们聚合在一个类文件对象里

path.py implements a path objects as first-class entities, allowing common operations on files to be invoked on those path objects directly
from path import Path
d = Path('/home/guido/bin')for f in d.files('*.py'):
    f.chmod(0755)
Watchdog

监视文件系统改动.事件驱动真是适合用来写监控逻辑啊

Python library and shell utilities to monitor filesystem events 可以在python中使用,也提供shell指令

3、pythonpy

the swiss army knife of the command line 让python更方便与shell配合使用,行为更像过滤器

ls | py -x '"mv `%s` `%s.txt`" % (x,x)' | sh
psutil

A cross-platform process and system utilities module for Python 方便用来查看系统信息(CPU, memory, disks, network)

4 、Fabric

Simple, Pythonic remote execution and deployment. 自动化运维工具,也可用于自动化本地任务,本地机器无非也只是一个普通的host

5、 ansible

大大有名的自动化运维工具,热度已远超Fabric,当部署环境巨复杂是,ansible playbook就是救星了。当然学习成本也是在不低,edX就是用它来自动化部署的,有200+ task好像

用户身份与进程权限顺便提一下用户身份与进程权限,python脚本中与系统交互(操作文件等),必然涉及到权限问题,所以我们需要了解linux的权限机制

linux中,子进程将继承了父进程的所有权限,当Linux加载内核文件以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境,init是第一个运行的程序,它的进程编号(pid)为1。其他所有进程都从它衍生,都是它的子进程。init进程在运行各种开机启动的程序之后,会执行一个login的子进程。我们将用户名和密码传递给login子进程。login在查询了/etc/passwd和/etc/shadow,并确定了其合法性之后,运行(利用exec)一个shell进程,shell进程有效身份被设置成为该用户的身份。

终于轮到我们的python进程登场啦,python进程从shell中启动,python权限为执行它的用户的权限,此后python中调用的shell指令则为python的子进程,权限与python相同

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-02-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏kangvcar

[face_recognition中文文档] 第5节 特约贡献

1202
来自专栏Java面试通关手册

可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章

相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东...

2005
来自专栏繁花云

利用Speedtest测试服务器网速

speedtest是由国外用户sivel编写的一款跨平台的网速测试软件,使用GO编写,支持大部分平台

3780
来自专栏python爬虫日记

不安装vc2015 Redistributable解决api-ms-win-crt-runtime-l1-1-0.dll丢失错误

最近用到python下的cx_Oracle模块,开发环境中测试正常,用cx_freeze打包后,到用户机器上一部署,各种奇奇怪怪的问题频出,运行环境如下:

4234
来自专栏跟着阿笨一起玩NET

WCF学习五(客户端和服务器时间不一致,导致通道建立失败的问题)

考虑到系统近来没有做过改动和升级操作,所以从客户的机器环境入手解决,最后发现客户端的日期时间和服务端的日期时间有较大差异,将客户端机器修改成和服务端的日期时间一...

771
来自专栏Albert陈凯

zookeeper详解

Zookeeper--Zookeeper是什么 博客借鉴http://www.cnblogs.com/yuyijq/p/3391945.html​ Googl...

3243
来自专栏张戈的专栏

Linux系统内存监控、性能诊断工具vmstat命令详解

最近,烦心事有点多,博客也像是进入了便秘期。虽然还远远不到说放弃的地步,但总有一种挤不出牙膏的郁闷感。很怀念前几个月的冲劲和激情,一天都能存好几篇优质草稿。 看...

3485
来自专栏阮一峰的网络日志

理解inode

inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学...

3557
来自专栏北京马哥教育

理解Inode

inode是什么 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5...

3125
来自专栏Java后端技术栈

缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题!

前面一节说到了《为什么说Redis是单线程的?》,今天给大家整理一篇关于Redis经常被问到的问题:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念的入门...

2801

扫码关注云+社区

领取腾讯云代金券