Programa para avisar de una conexión en Linux (Python3)

Iniciado por Sergiolocuelo, 30 Agosto 2018, 15:47 PM

0 Miembros y 1 Visitante están viendo este tema.

Sergiolocuelo

Hola, tengo un scipt con python que me avisa de cuando alguien se a conectado a mi sistema, el problema es que cuando lo ejecuto y me conecto con otro usuario me avisa, pero cuando me desconecto con el otro usuario mientras el programa se sigue ejecutando me sigue apareciendo que hay alguien conectado, este es mi script:

#! /usr/bin/python3
import subprocess
import time

import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
Notify.init("ssh2.py3")


a=subprocess.check_output("who|wc -l",shell=True)
b=int(a.decode("utf-8").strip())
print(b)
def funcion():



if b>1:
subprocess.run("zenity --info --text 'Alguien se a conectado'", shell=True)
subprocess.run("sudo xterm -e home/sergio/Escritorio/prueba.sh",shell=True)

if b==2:
su1=subprocess.check_output("who|tail -2",shell=True)
su2=su1.decode("utf-8").strip()
print("Se a conectado: ")
print(su2)
Notify.Notification.new("Alguien se a conectado", su2).show()

if b==3:
se1=subprocess.check_output("who|tail -3",shell=True)
se2=se1.decode("utf-8").strip()
print("Se a conectado: ")
print(se2)
Notify.Notification.new("Alguien se a conectado", se2).show()

if b>=4:
si1=subprocess.check_output("who",shell=True)
si2=si1.decode("utf-8").strip()
print("Se an conectado mas de 4 usuarios: ")
print(si2)
Notify.Notification.new("Alguien se a conectado", si2).show()



while True:
funcion()
time.sleep(5)


Quiero que no siga apareciendo que alguien se a conectado si solo estoy yo. Si podeís mejorar mi programa hacerlo y explicarmelo, me gustaría aprender. Gracias

animanegra

Perdona hay algo que no veo ¿Donde le estas cambiando el valor a b en cada iteracion? Para que b tenga el valor del  numero de usuarios del momento en el que deseas comprobarlo. Veo la primera asignacion pero no veo la asignacion dentro del bucle.

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

Sergiolocuelo

Cita de: animanegra en 30 Agosto 2018, 16:38 PM
Perdona hay algo que no veo ¿Donde le estas cambiando el valor a b en cada iteracion? Para que b tenga el valor del  numero de usuarios del momento en el que deseas comprobarlo. Veo la primera asignacion pero no veo la asignacion dentro del bucle.

Acabo de darme cuenta del error, tengo que introducir las variables a y b dentro de la función