Created
May 16, 2016 20:02
-
-
Save anderson-attilio/b705dda5a8ad98e2162cb2ec07dbad7f to your computer and use it in GitHub Desktop.
Script de limpeza de semaforos linux.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
#coding: utf-8 | |
from StringIO import StringIO | |
import subprocess | |
from utils import (send_mail, FROM, TO) | |
def busca_ipcs(): | |
""" | |
A funcao busca_ipcs, executa um comando que por sua vez retorna a quantidade de semaforos \ | |
o retorno da busca é convertido em uma lista, usando StringIO | |
""" | |
ipcs = "sudo ipcs -s | awk '/apache/ {print $2}'" | |
p = subprocess.Popen(ipcs, stdout=subprocess.PIPE, shell=True) | |
(output, err) = p.communicate() | |
ipcs_lista = [] | |
for line in StringIO(output): | |
ipcs_lista.append(line.strip()) | |
return ipcs_lista | |
def limpa_ipcs(pid): | |
""" | |
A funcao limpa_ipcs executa um comando que limpa as ocorrencias \ | |
de semaforos. | |
O argumento pid tem a funcao de armazenar o numero do pid encontrados | |
""" | |
ipcrm = "sudo ipcrm -s %s" %pid | |
p = subprocess.call(ipcrm, shell=True) | |
if __name__ == '__main__': | |
CONTENT = '' | |
""" | |
A variavel ipcs_proc recebe o retorno da funcao busca_ipcs | |
Na estrutura de repeticao usamos o metodo len para contar a \ | |
quantidade de retorno da variavel ipcs_proc, se for >= 200 \ | |
sera executado a funcao limpa_ipcs | |
""" | |
ipcs_proc = busca_ipcs() | |
if len(ipcs_proc) >= 200: | |
for i in ipcs_proc: | |
limpa_ipcs(i) | |
""" | |
Funcao content que realiza o envio de email | |
""" | |
CONTENT += "Procediemnto de limpeza de semaforos realizado! " | |
else: | |
CONTENT += "Sem acao de limpeza de semaforos! " | |
send_mail(CONTENT) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment