Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Sergiolocuelo en 30 Agosto 2018, 15:47 pm



Título: Programa para avisar de una conexión en Linux (Python3)
Publicado por: Sergiolocuelo en 30 Agosto 2018, 15:47 pm
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:

Código:
#! /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


Título: Re: Programa para avisar de una conexión en Linux (Python3)
Publicado por: 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.


Título: Re: Programa para avisar de una conexión en Linux (Python3)
Publicado por: Sergiolocuelo en 31 Agosto 2018, 19:27 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