Windows上自动化开启软件

可以使用Pyautoit 来模拟点击或者按键。Pygui也快。测试pyautoit比较好。但是实际只是封装了autoit的dll。建议直接用autoit写,类VB风格编程。

Python 写CSV文件

import csv

def WriteinfoToCsv(filename,itemname,iteminfo):
    '''
    :param filename:String类型
    :param itemname:list类型
    :param iteminfo:list类型
    :return: 1
    '''
    with open(filename, 'w',newline='', encoding='utf-8-sig') as f:
        writer = csv.writer(f)
        writer.writerow(itemname)
        writer.writerow(iteminfo)
    return 1

Zabbix api获取某 item的最新值

参考下面函数:

def getValueFromHost(host,itemName):
    '''
    :param host: host name,usually ip,like '10.189.66.131',but need to be string type.
    :param itemName: like "*cpu_model*", need to be string type.
    :return: The last value of itemName for specific 'host'. String type.
    '''
    for h in zapi.item.get(output=["itemid", "name", "hostid", "value_type", "lastvalue"], host=host,
                           search={"name": '*'+itemName+'*'}, searchWildcardsEnabled='1'):
        return (h['lastvalue'])

def getValueFromItem(host,item):
    '''
    :param host:
    :param item:
    :return:  return 数组
    '''
    data=[]
    for eachItem in item:
        data.append(getValueFromHost(host,eachItem))
    return data

另外,获取某主机资产清单值,使用以下函数:


def getInventorydataFromHostName(hostname,item):
    for h in zapi.host.get(output=['host'], filter={'host': hostname},
                           selectInventory=[item]):
        return h['inventory'][item]

另外,预先导入:

from pyzabbix import ZabbixAPI, ZabbixAPIException
from datetime import datetime
import time
import warnings

记录zabbix低级自动发现的json格式,以及相应脚本

json格式如下:

{
“data”: [
{
“{#HOSTIP}”: “/var/log/audit”
},
{
“{#HOSTIP}”: “/var/log/chrony”
},
{
“{#HOSTIP}”: “/var/log/cups”
},
{
“{#HOSTIP}”: “/var/log/gdm”
},
{
“{#HOSTIP}”: “/var/log/glusterfs”
},
{
“{#HOSTIP}”: “/var/log/httpd”
},
{
“{#HOSTIP}”: “/var/log/mariadb”
},
{
“{#HOSTIP}”: “/var/log/ntpstats”
},
{
“{#HOSTIP}”: “/var/log/php-fpm”
},
{
“{#HOSTIP}”: “/var/log/pluto”
},
{
“{#HOSTIP}”: “/var/log/ppp”
},
{
“{#HOSTIP}”: “/var/log/qemu-ga”
},
{
“{#HOSTIP}”: “/var/log/sa”
},
{
“{#HOSTIP}”: “/var/log/samba”
},
{
“{#HOSTIP}”: “/var/log/speech-dispatcher”
},
{
“{#HOSTIP}”: “/var/log/sssd”
},
{
“{#HOSTIP}”: “/var/log/tuned”
}
]
}

产生该json格式的python代码参考:

#!/usr/bin/env python3
#encoding=utf-8
import os
import sys
import json

FileDir=’/var/log/’

def CheckHostip(filedir):
output = os.popen(‘find ‘+filedir+’* -maxdepth 0 -type d’)
hostip = str(output.read())
hostip = hostip[:hostip.find(‘\r’)]
hostdirlist = hostip.split(‘\n’)
return (hostdirlist)

def returnjson(fileDir):

thislist=[]
for i in CheckHostip(fileDir):
thislist.append({
“{#HOSTIP}”:i

})
a = {
“data”: thislist
}
print(json.dumps(a, sort_keys=True, indent=2))
return 1

if __name__==”__main__”:
returnjson(FileDir)

记录使用Python监控服务器日志。

后续直接使用了宏,因此这个Python脚本没用了,但是还是觉得有意义,所以记下来。

#!/usr/bin/env python3
#encoding=utf-8
import os
import socket
from pyzabbix import ZabbixAPI, ZabbixAPIException
import sys
import warnings
import time

ServerName=”ServerNameHere”
Username=’usernamehere’
Passwd=’passwdhere’
Url=’https://zabbix.mytlu.cn’
FileDir=’/var/log/’
MonitorFilename=’/log’

def CheckHostip(filedir):
output = os.popen(‘find ‘+filedir+’* -maxdepth 0 -type d’)
hostip = str(output.read())
hostip = hostip[:hostip.find(‘\r’)]
hostdirlist = hostip.split(‘\n’)
return (hostdirlist)

def CheckZabbixItems(LogDir):
warnings.filterwarnings(‘ignore’)
ZABBIX_SERVER = Url
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.session.verify = False
zapi.login(Username, Passwd)
hostid=zapi.host.get(
filter={
“host”:ServerName
}
)
hostid=hostid[0][‘hostid’]
pre_interfaceid = zapi.hostinterface.get(
hostids=hostid
)
interfaceid = pre_interfaceid[0][‘interfaceid’]
try:
itemget = zapi.item.get(
hostid=hostid,
search={
“key_”: “vfs.file.md5sum[“+LogDir+MonitorFilename+”]”
},
sortfield=”name”
)
print(itemget)
if itemget == []:
print(‘zabbix里没有该监控项,添加中监控项和触发器中…’)
CreateItems(LogDir, interfaceid, hostid)
CreateTrigger(LogDir)
return 1
else:
print(‘zabbix里有该监控项,尝试添加中触发器中…’)
try:
CreateTrigger(LogDir)
except:
return 0
return 1
except Exception as e:
print(‘zabbix里没有该监控项,添加中监控项和触发器中…’)
CreateItems(LogDir,interfaceid,hostid)
CreateTrigger(LogDir)
return 1

def CreateItems(LogDir,interfaceid,hostid):
warnings.filterwarnings(‘ignore’)
ZABBIX_SERVER = Url
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.session.verify = False
zapi.login(Username,Passwd)
item = zapi.item.create(name=”Monitor_Log:”+LogDir+MonitorFilename,
key_=”vfs.file.md5sum[“+LogDir+MonitorFilename+”]”,
hostid=hostid,
type=0,
value_type=1,
delay=”10s”,
interfaceid=interfaceid
)
print(item)
return 1

def CreateTrigger(LogDir):
warnings.filterwarnings(‘ignore’)
ZABBIX_SERVER = Url
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.session.verify = False
zapi.login(Username, Passwd)
trigger = zapi.trigger.create(
description=”[“+LogDir+MonitorFilename+”]:Log not changed in 1s”,
expression=”{“+ServerName+”:vfs.file.md5sum[“+LogDir+MonitorFilename+”].change()}=0″,
priority=’4′,
manual_close=’1′

)
print(trigger)
return 1

if __name__==’__main__’:
hostdirlist=CheckHostip(FileDir)
print(hostdirlist)
for i in hostdirlist:
CheckZabbixItems(i)

树莓派检测CPU温度

代码是Python2代码,适当修改为长输出。可自行改为python3.

代码附赠了CPU负载和内存使用情况

代码引用地址:
https://gist.github.com/582033/b94dc1d4941f63bb28d837fa9c72f08d

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
显示树莓派cpu温度、使用率及内存使用率
'''

import os
import time

def show_temp():
    file = open("/sys/class/thermal/thermal_zone0/temp")
    temp = float(file.read()) / 1000
    file.close()
    print "Temp: %.1f ℃" %temp


def show_mem():
    mem_cmd = "free -m | grep Mem | awk '{print ($4+$6)/$2}'"
    mem_sur = round(float(os.popen(mem_cmd).read()), 2) * 100
    print "Mem avail: %d%%" % mem_sur


def show_cpu():
    cpu_cmd = "uptime | awk '{print $8,$9,$10,$11,$12}'"
    cpu_used = os.popen(cpu_cmd).read()
    print "Cpu Used: %s" % cpu_used.replace('\n', '')


if __name__ == '__main__':

    while 1:
        show_temp()
        show_cpu()
        show_mem()
        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
        time.sleep(2)