Gör din Minecraft Server berätta du när spelare är Online (3 / 6 steg)
Steg 3: Hitta ansluten spelare och att göra en grundläggande anmälaren
Ta reda på om någon spelare är ansluten till vår Minecraft server, visar det sig att vi kan använda ett paket som redan är installerat på våra maskiner, lsof. lsof listar öppna filer, och eftersom vi använder Linux, där allt är en fil, detta inkluderar nätverksanslutningar. Om du kör bara lsof utan några flaggor, du kommer att få många många sidor av produktionen, men som kan filtreras ner. Flaggan -i anger nätverksanslutningar, men använder det i sig är sannolikt att fortfarande producera för många resultat, även på en engångsbruk server. Detta kan minskas ner ytterligare genom att ange att vi letar bara TCP-anslutningar på port 25565 (detta kommer att variera om du kör din Minecraft server på en icke-standard port), men även att kommer att producera resultat även om ingen är ansluten till servern.
Bara för att ta reda på hur produktionen ser ut just nu, så vi vet hur vi måste begränsa saker, låt oss köra kommandot vi har hittills.
lsof - iTCP: 25565
Resultatet av detta kommer att se ut så här (förutsatt att ingen är ansluten):
KOMMANDOT PID FÖRBRUKAREN FD TYP ENHET STORLEK/AV NODNAMN
Java 11504 mig 30u IPv6 4041229 0t0 TCP *: 25565 (lyssna)
Låt oss fokusera på den sista kolumnen, dock, eftersom det verkar vara det viktigaste. Använda awk, kan vi filtrera bort allt utom den sista kolumnen. Göra det, om någon var anslutna, vi skulle se något i stil med följande:
Namn
*: 25565 (LYSSNA)
hostname.local:25565 -> 192.168.1.42:27349 (ETABLERAD)
Lyckligtvis, lsof har en flagga som låter oss ytterligare filtrera våra resultat. Eftersom vi är endast intresserade av anslutningar med status av etablerade, kan vi nu hitta om någon är ansluten till vår server genom att köra
lsof - iTCP: 25565 - sTCP: etablerade
Nu vi kan göra vissa grundläggande kommando-kedja, med & &, skicka ett mejl när någon är ansluten till servern.
Vår enkla anmälaren nu ser ut så här
lsof - iTCP: 25565 - sTCP: etablerade & & echo "Online spelare" | /usr/sbin/ssmtp användare
Vi kan nu öppna upp våra crontab, använder crontab -e, och skapa en ny rad som så
* / 5 **** lsof - iTCP: 25565 - sTCP: etablerade & & echo "Online spelare" | /usr/sbin/ssmtp användare
Nu, vi kunde bara sluta här, med ett cron jobb som eldar var femte minut, kontroller för spelare ansluten till vår Minecraft server och skickar ut ett mail om den hittar något, men hur vi har det inrättats nu skickar en anmälan var femte minut så länge som det finns spelare ansluten.
Låt oss göra att arbetet lite bättre, ska vi?