Étape 3: Conclusion connecté joueurs et faire un notificateur de base
Pour savoir si tous les joueurs sont connectés à notre serveur Minecraft, il s’avère que nous pouvons utiliser un package qui est déjà installé sur nos machines, lsof. lsof répertorie les fichiers ouverts, et comme nous utilisons Linux, où tout est un fichier, cela inclut les connexions réseau. Si vous exécutez simplement lsof sans aucun indicateur, vous obtiendrez beaucoup de nombreuses pages de sortie, mais qui peuvent être filtrées vers le bas. L’indicateur -i spécifie les connexions réseau, mais l’utilisation qui en soi est susceptible de produire encore trop de résultats, même sur un serveur non réutilisables. Cela peut être réduite en bas encore plus loin en spécifiant que nous recherchons seulement des TCP connexions sur le port 25565 (cela varie si vous exécutez votre serveur Minecraft sur un port non standard), mais même que les résultats produits sera même si personne n’est connecté au serveur.
Juste pour savoir ce que la sortie ressemble à ce moment, donc nous savons comment nous devons affiner les choses, exécutons la commande que nous avons jusqu'à présent.
lsof - PICT : 25565
La sortie de ce ressemblera à quelque chose comme ceci (à condition que personne n’est connecté) :
COMMANDE PID UTILISATEUR FD TYPE TAILLE/ARRÊT NŒUD NOM_PÉRIPHÉRIQUE
Java 11504 me 30u IPv6 4041229 0 t 0 TCP *: 25565 (écouter)
Intéressons-nous à cette dernière colonne, cependant, car il semble être le plus important. En utilisant awk, nous pouvons filtrer tout sauf cette dernière colonne. Ainsi, si une personne étaient connectés, nous verrions quelque chose comme ce qui suit :
NOM
*: 25565 (ÉCOUTER)
hostname.local:25565 -> 192.168.1.42:27349 (établi)
Heureusement, lsof est un indicateur qui nous permet de filtrer davantage les résultats. Puisque nous sommes seulement intéressés par des connexions avec le statut des crees, nous pouvons maintenant trouver si quelqu'un est connecté à notre serveur en exécutant
lsof - PICT : 25565 - sTCP : créé
Maintenant, nous pouvons faire quelques commande base en chaîne, à l’aide & &, envoyer un email lorsque quelqu'un est connecté au serveur.
Notre simple notifiant ressemble maintenant à ceci
lsof - PICT : 25565 - sTCP : établi & & echo « Joueurs en ligne » | /usr/sbin/ssmtp utilisateur
Nous pouvons maintenant ouvrir notre crontab, à l’aide crontab -eet de créer une ligne comme ceci
* / 5 **** lsof - PICT : 25565 - sTCP : établi & & echo « Joueurs en ligne » | /usr/sbin/ssmtp utilisateur
Maintenant, nous pouvions nous arrêter juste ici, avec un cron job qui se déclenche toutes les cinq minutes, vérifie les joueurs connectés à notre serveur Minecraft et envoyer un email si il en trouve, mais la façon dont nous l’avons mis en place maintenant enverra une notification toutes les cinq minutes , tant qu’il y a des joueurs connectés.
Let's make que travail un peu mieux, allons-nous ?