Paso 3: Encontrar conectado jugadores y haciendo un notificador básico
Para saber si cualquier jugador está conectados a nuestro servidor de Minecraft, resulta que podemos utilizar un paquete que ya está instalado en nuestras máquinas, lsof. lsof muestra los archivos abiertos, y ya que estamos utilizando Linux, donde todo es un archivo, esto incluye las conexiones de red. Si solo ejecutas lsof sin cualquier banderas, obtendrás muchas muchas páginas de salida, pero que se puede filtrar hacia abajo. La bandera -i especifica las conexiones de red, pero utiliza por sí sola es probable que todavía demasiados resultados, incluso en un servidor de un solo uso. Esto puede ser enangostado abajo aún más especificando que buscamos sólo TCP las conexiones en Puerto 25565 (esto será diferente si se está ejecutando el servidor de Minecraft en un puerto no estándar), sino incluso que se producen los resultados incluso si nadie está conectado al servidor.
Para averiguar lo que la salida parece ahora, así que sabemos cómo debemos acotar cosas, vamos a ejecutar el comando que tenemos hasta ahora.
lsof - IPCT: 25565
La salida de este se verá algo como esto (siempre y cuando nadie está conectado):
NOMBRE DEL COMANDO PID USUARIO FD TIPO DISPOSITIVO TAMAÑO/DE NODO
Java 11504 me 30u IPv6 4041229 0t0 TCP *: 25565 (escuchar)
Centrémonos en la última columna, sin embargo, ya que parece ser el más importante. Usando awk, podemos descartar todo excepto la última columna. Haciendo eso, si alguien se conecta, veríamos algo como lo siguiente:
NOMBRE
*: 25565 (ESCUCHAR)
hostname.local:25565 -> 192.168.1.42:27349 (establecido)
Por suerte, lsof tiene una bandera que nos permite filtrar aún más los resultados. Ya que sólo estamos interesados en las conexiones con la condición de establecido, ahora podemos encontrar si alguien se conecta a nuestro servidor mediante la ejecución de
lsof - IPCT: 25565 - sTCP: establecido
Ahora podemos hacer algunos básico encadenamiento de comandos, usando & &, enviar un correo electrónico cuando alguien se conecta al servidor.
Nuestro sencillo notificador ahora tiene este aspecto
lsof - IPCT: 25565 - sTCP: establecido & & echo "Jugadores en línea" | usuario /usr/sbin/ssmtp
Ahora podemos abrir nuestro crontab, usando crontab -ey crear una nueva línea así
* / 5 **** lsof - IPCT: 25565 - sTCP: establecido & & echo "Jugadores en línea" | usuario /usr/sbin/ssmtp
Ahora, podríamos simplemente dejamos aquí con un cron job que se activa cada cinco minutos, comprueba los jugadores conectados a nuestro servidor de Minecraft, y enviando un correo electrónico si encuentra alguno, pero el camino lo tenemos configurado ahora le enviará una notificación cada cinco minutos como hay jugadores conectados.
Vamos a hacer que trabajo un poco mejor, ¿vamos?