<Python> 自动化安全运维常用模块实用实例笔记

psutil    系统基础信息模块

    

psutil.users()                # 返回当前登录系统的所有用户信息(用户名,IP及登录时间)

pstuil.boot_time()        # 获取开机时间,以LINUX时间戳格式返回

# 转换成自然时间格式

datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")


difflib    文件内容差异对比模块


       对比不同版本配置文件的差异,实现的思路是读取两个需对比的配置文件,再以换行符作为分隔符,调用difflib.HtmlDiff()生成HTML格式的差异文档。


import difflib, sys

# 文件读取分隔函数
def readfile(filename):
try:
        fileHandle = open(filename, 'rb')
        text = fileHandle.read().splitlines()   # 读取后按行进行分隔
        fileHandle.close()
        return text
except IOError as error:
        print "Read file Error:" + str(error)
        sys.exit()


if __name__ == '__main__':
try:
        textfile1 = sys.argv[1]
        textfile2 = sys.argv[2]
except Exception, e:
print "Error:" + str(e)
print "Usage: content_diff.py filename1 filename2"

if textfile1=="" or textfile2=="":
print "Usage: content_diff.py filename1 filename2"
sys.exit()

    text1_lines = readfile(textfile1)
    text2_lines = readfile(textfile2)

    d = difflib.HtmlDiff()
print d.make_file(text1_lines, text2_lines) # 通过make_file方法输出HTML格式的比对结果


paramiko    基于Python实现的SSH2远程安全连接,支持认证及密钥方式的模块。


       实现密钥方式登录远程主机。实现自动密钥登录方式,第一步需要配置与目标设备的密钥认证支持,私钥文件可以存放在默认路径“/.ssh/id_rsa”,也可以自定义,通过paramiko.RSAKEY.from_private_key_file()方式引用。

       配置LINUX主机SSH无密码访问:使用ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发。在主控端执行:ssh-keygen    -t    rsa,有询问的直接回车即可,将在/root/.ssh/下生成一对密钥(Ctrl+H查看LINUX隐藏文件),其中id_rsa为私钥,id_rsa.pub为公钥(需要下发到被控主机用户.ssh目录,同时要求重命名成authorized_keys文件)。接下来同步公钥文件id_rsa.pub到目标主机,命令格式:/usr/bin/ssh-copy-id    [-i [identity_file]]    [user@]machine。如:#ssh-copy-id    -i    /root/.ssh/id_rsa.pub    sw1t0@192.168.2.33


#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = "sw1t0"

import paramiko
import os

hostname = "10.12.0.9"
username = "wangxunyi"
# 发送paramilo日志到指定文件
paramiko.util.log_to_file('syslogin.log')

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
privateKey = os.path.expanduser('~/.ssh/id_rsa')     # 定义私钥存放路径
key = paramiko.RSAKey.from_private_key_file(privateKey) # 创建私钥对象key

ssh.connect(hostname=hostname, username=username, pkey=key)
stdin, stdout, stderr = ssh.exec_command('ifconfig')
print stdout.read()
ssh.close()



评论
热度(3)

© Sw1t0range | Powered by LOFTER