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()