Hola, tengo una pequeña duda, ¿Dentro de un bucle for o while se puede meter condicionales, como por ejemplo un if?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Slava_TZD en 20 Agosto 2018, 22:08 PM
Era un path de ejemplo, el fichero no es el mismo ni tiene porque estar en el mismo lugar dependiendo del logger que tengas y de como esté configurado... Si te conectas por SSH y luego haces un grep -r "shell on" en /var/log te dirá donde está logueando.
Puede que la pattern no te coincida...eg te sale el pid del servidor en log 'sshd[8321]' o tiene un formato distinto, simplemente te fijas en el mensaje que se genera al loguearte y creas otra.
Suerte
#! /usr/bin/python3
import subprocess
def bucle():
a=subprocess.check_output("who|wc -l", shell=True)
if a[0]>2:
subprocess.run("zenity --info --text 'Alguien se a conectado'", shell=True)
subprocess.run("espeak -ves 'Alguien se a conectado al sistema'", shell=True)
while True:
bucle()
subprocess.run("sleep 30", shell=True)
Cita de: Slava_TZD en 20 Agosto 2018, 20:58 PM
w no te muestra exactamente si a se han conectado por SSH. La forma de hacerlo es como comentó el otro compañero y te muestro en el script. No tiene misterio, hace un tail al log y cada línea es evaluada en busca de una pattern que indique que una nueva sesión se abrió.
Si quieres hacer funcionar tu script tienes que meter todo eso dentro de un bucle.
Suerte
Cita de: Slava_TZD en 20 Agosto 2018, 04:47 AM#!/bin/bash
if [ "$EUID" -ne 0 ]
then echo "run as root"
exit
fi
LOG="/var/log/sshd_log"
PATTERN="[sshd] Starting session: shell on"
tail -F -n0 ${LOG} |\
while read LINE; do
if echo "${LINE}" | grep -F "${PATTERN}" >/dev/null; then
MSG=$(echo "${LINE}"|cut -d' ' -f10-)
xmessage -center "New session ${MSG}" &
fi
done
xmessage es solo de ejemplo, si quieres una notificación necesitas alguna pijada estilo libnotify+zenity.
Suerte
#! /bin/bash
conectados=`w|wc -l`
for conex in $conectados; do
if [ $conex -gt 3 ]; then
zenity --info --text "Alguien se a conectado"
fi
done
Cita de: engel lex en 19 Agosto 2018, 19:34 PM
lo que implique voz, implica IA, y la API de google es una de las más simples gratuitas y una de las mejores del mercado entendiendo la voz, hay otras, puedes buscar, pero ya tienes una idea que buscar "speech recognition" y debe comprender español y preferiblemente tu acento también, ya que esa es la base del reconocimiento de voz
Cita de: engel lex en 19 Agosto 2018, 19:22 PM
esto no es taaan facil, de entrada querras usar esto...
https://foro.elhacker.net/scripting/python_reconocimiento_de_voz-t475176.0.html
Cita de: engel lex en 17 Agosto 2018, 01:09 AM
El correcto es 'stderr
import subprocess
a=subprocess.run("ps -A",stdeer=subprocess.PIPE,shell=True)
b=a.stdeer
print(b)