Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anderson-attilio/b705dda5a8ad98e2162cb2ec07dbad7f to your computer and use it in GitHub Desktop.
Save anderson-attilio/b705dda5a8ad98e2162cb2ec07dbad7f to your computer and use it in GitHub Desktop.
Script de limpeza de semaforos linux.
#!/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