Stap 3: Finding aangesloten spelers en het maken van een fundamentele Notifier
Als u wilt weten of alle spelers met onze Minecraft server verbonden bent, blijkt dat we een pakket dat al geïnstalleerd op onze machines, lsofkunnen gebruiken. lsof lijst met geopende bestanden, en aangezien we Linux gebruiken, waar alles een bestand is, dit omvat netwerkverbindingen. Als u uitsluitend stormloop lsof zonder geen vlaggen, krijg je veel vele pagina's van de output, maar die kan worden gefilterd. De -i vlag geeft aan netwerkverbindingen, maar gebruik dat vanzelf is waarschijnlijk nog steeds teveel om resultaten te produceren, zelfs op een server voor eenmalig gebruik. Dit kan worden verkleind naar beneden nog verder door te geven dat we alleen voor TCP kijken verbindingen op poort 25565 (dit zal verschillen als u uw Minecraft server op een niet-standaard poort uitvoert), maar zelfs dat zal produceren resultaten zelfs als niemand is aangesloten op de server.
Gewoon om te weten wat de output ziet er als nu, zodat we weten hoe we moeten dingen beperken, laten we het commando hebben we tot nu toe.
lsof - iTCP: 25565
De output van dit zal als volgt uitzien (op voorwaarde dat niemand is verbonden):
OPDRACHT PID USER FD TYPE APPARAAT GROOTTE/UIT KNOOPPUNTNAAM
Java 11504 me 30u IPv6 4041229 0t0 TCP *: 25565 (luister)
Let's focus in op die laatste kolom, hoewel, omdat het lijkt te zijn de belangrijkste. Met behulp van awk, kunnen we uitfilteren alles behalve die laatste kolom. Doen dat als iemand verbonden waren, zouden we iets als het volgende zien:
NAAM
*: 25565 (LUISTER)
hostname.local:25565 -> 192.168.1.42:27349 (vastgesteld)
Gelukkig, lsof heeft een vlag waarmee ons verder filteren door bijvoorbeeld onze resultaten. Aangezien wij alleen geïnteresseerd in verbindingen met de status van gevestigde bent, vinden we nu als iemand door te voeren naar onze server is aangesloten
lsof - iTCP: 25565 - sTCP: gevestigd
Nu kunnen we sommige fundamentele opdracht-chaining, met behulp van & &, om een e-mail wanneer iemand is verbonden met de server.
Onze eenvoudige notifier ziet er nu als volgt
lsof - iTCP: 25565 - sTCP: gevestigde & & echo "Spelers online" | /usr/sbin/ssmtp gebruiker
We kunnen nu onze crontab, openen met behulp van crontab -e, en een nieuwe regel maken zo
* / 5 **** lsof - iTCP: 25565 - sTCP: gevestigde & & echo "Spelers online" | /usr/sbin/ssmtp gebruiker
Nu, we kunnen gewoon stoppen hier, met een cron job, die elke vijf minuten, branden controleert voor spelers die zijn verbonden met onze Minecraft server en verzenden van een e-mail als er een, maar de manier waarop we opgezet nu hebben stuurt een kennisgeving elke vijf minuten , zolang er spelers aangesloten zijn.
Laten we dat werk een beetje beter, zullen we?