Serveur minecraft

Script shell du serveur Minecraft · GitHub – Resoudre les problemes d’un serveur MineCraft

Par Titanfall , le 3 mai 2019 - 11 minutes de lecture

#!/ bin / bash # auteur original: Relliktsohg # Un grand merci à Maine pour sa sauvegarde incrémentale # Merci à endofzero pour sa routine de mise à jour améliorée # # Installation: # – Copiez le script dans votre dossier de serveur Minecraft. # – Autoriser l'exécution du script (chmod + x minecraft.sh) # – Vérifiez les droits de l'utilisateur du script. Chaque dossier spécifié dans la configuration doit être disponible. # – Editez le script pour le configurer (voir la section configurer) # – Plus de détails: http://www.minecraftforum.net/topic/37290-another-shell-script/ # # Usage: # ./minecraft.sh # – Sans argument, le script reprendra l'écran du serveur. (Si vous voulez fermer # l'écran sans arrêter le serveur, utilisez CTRL + A puis appuyez sur D pour détacher l'écran) # # statut ./minecraft.sh # – Vous indique si le serveur est en cours d'exécution ou non. # # ./minecraft.sh start [force] # – Démarre le serveur. Si vous savez que votre serveur ne fonctionne pas, mais que le script le croit, utilisez la commande # options de force. # # ./minecraft.sh stop [force] # – S'explique # # ./minecraft.sh redémarrer [warn] # – Si l'option warn est spécifiée, un avertissement 30s & 10s s'affichera avant le redémarrage. # # Journaux ./minecraft.sh [clean] # – Analyse les journaux dans plusieurs fichiers, regroupés dans un dossier nommé avec la date de la journalisation. # Si l'option de nettoyage est spécifiée, les dossiers les plus anciens seront déplacés dans le dossier de sauvegarde. # Encore une fois, cette commande devrait poser problème avant le redémarrage du serveur. # # ./minecraft.sh sauvegarde [clean] # – Affiche un message aux joueurs si le serveur est en ligne, arrête l'écriture de morceaux, crée un # archives datées et sauvegarde le dossier du monde. Si l'option de nettoyage est spécifiée, le programme sera supprimé. # archives plus anciennes. # # ./minecraft.sh cartographie # – Affiche un message aux joueurs si le serveur est en ligne, arrête l'écriture de morceaux, initie # Le script de cartographie de c10t. Je recommande fortement que MAPS_PATH soit un dossier public Internet. # # ./minecraft.sh mise à jour # – Arrête le serveur s'il est en ligne, sauvegarde les anciens binairies, télécharge les derniers binaires de # mincraft.net et redémarre le serveur. # Configuration MC_PATH = / home / minecraft SERVERMOD = 0 RUNECRAFT = 0 SCREEN_NAME ="Minecraft" MEMALOC = 512 DISPLAY_ON_LAUNCH = 1 WORLD_NAME ="monde" BKUP_PATH =$ MC_PATH/ sauvegarde BKUP_DAYS_INCR = 2 BKUP_DAYS_FULL = 5 BACKUP_FULL_LINK =$ BKUP_PATH/$ WORLD_NAME_full.tgz BACKUP_INCR_LINK =$ BKUP_PATH/$ WORLD_NAME_incr.tgz CARTO_PATH =$ MC_PATH/ carto MAPS_PATH = / var / www / minecraftMaps LOG_TDIR = / var / www / minecraftLogs LOGS_DAYS = 7 # Fin de configuration si [[[[$ SERVERMOD -eq 1 ] puis si [[[[-e $ MC_PATH/ journaux /*.log.lck] puis ONLINE = 1 autre ONLINE = 0 Fi autre si [[[[-e $ MC_PATH/server.log.lck] puis # ps -e | grep java | wc -l ONLINE = 1 autre ONLINE = 0 Fi Fi afficher() écran -R $ SCREEN_NAME serveur_launch() écho "Lancer le serveur minecraft …" si [[[[$ SERVERMOD -eq 1 ] puis CD $ MC_PATH; écran -m -d -S $ SCREEN_NAME java -Xmx$ MEMALOCM -Xms$ MEMALOCM -Djava.net.preferIPv4Stack = true -jar Minecraft_Mod.jar nogui; dormir 1 autre CD $ MC_PATH; écran -m -d -S $ SCREEN_NAME java -Xmx$ MEMALOCM -Xms$ MEMALOCM -Djava.net.preferIPv4Stack = true -jar minecraft_server.jar nogui; dormir 1 Fi arrêt_serveur() écho "Arrêt du serveur minecraft …" écran -S $ SCREEN_NAME -p 0 -X choses "`printf "arrêter. r"`"; dormir 5 si [[[[$ # -gt 0] puis Cas 1 $ dans ################################################## ############### "statut") si [[[[$ ONLINE -eq 1 ] puis écho "Le serveur Minecraft semble en ligne." autre écho "Le serveur Minecraft semble hors ligne." Fi;; ################################################## ############### "début") si [[[[$ ONLINE -eq 1 ] puis écho "Le serveur semble déjà fonctionner!" Cas 2 $ dans "Obliger") tuer `ps -e | grep java | cut -d " " -f 1` rm -fr $ MC_PATH/*.log.lck 2> / dev / null / ;; esac autre serveur_launch si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ] puis afficher Fi Fi;; ################################################## ############### "Arrêtez") si [[[[$ ONLINE -eq 1 ] puis arrêt_serveur autre Cas 2 $ dans "Obliger") tuer `ps -e | grep java | cut -d " " -f 1` rm -fr $ MC_PATH/*.log.lck 2> / dev / null / ;; *) écho "Le serveur semble être hors ligne …";; esac Fi;; ################################################## ############### "redémarrer") si [[[[$ ONLINE -eq 1 ] puis Cas 2 $ dans "prévenir") écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dit le serveur va redémarrer dans 30s! r"`"; dormir 20 écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Dites que le serveur va redémarrer dans 10s! r"`"; dormir 10 ;; esac arrêt_serveur Fi serveur_launch si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ] puis afficher Fi;; ################################################## ############### "les journaux") mkdir -p $ LOG_TDIR CD $ LOG_TDIR Cas 2 $ dans "nettoyer") DATE =$ (date +% d-% m –date "$ LOGS_DAYS il y a jour") si [[[[-e journaux$ DATE ] puis mkdir -p $ BKUP_PATH/ journaux mv logs-$ DATE $ BKUP_PATH/ journaux / Fi ;; esac DATE =$ (date +% d-% m) LOG_NEWDIR = logs-$ DATE si [[[[-e $ LOG_TDIR/$ LOG_NEWDIR ] puis rm $ LOG_TDIR/$ LOG_NEWDIR/* autre mkdir $ LOG_TDIR/$ LOG_NEWDIR Fi DATE =$ (date +% d-% m-% Hh% M) LOG_TFILE = logs-$ DATE.bûche si [[[[$ SERVERMOD -eq 1 ] puis si [[[[$ ONLINE -eq 1 ] puis LOG_LCK =$ (nom de base $ MC_PATH/ journaux /*.log.lck .log.lck) écho "Trouvé un journal verrouillé: $ LOG_LCK" autre LOG_LCK ="" Fi CD $ MC_PATH/ journaux / pour je dans * faire si [[[[$ i ! = $ LOG_LCK.log.lck] # skip du fichier lck puis chat $ i >> $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE si [[[[$ i ! = $ LOG_LCK.log] # Si vous ne supprimez pas le fichier journal, si le service est en route puis rm $ i Fi Fi terminé autre CD $ MC_PATH chat serveur.log >> $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE Fi si [[[[-e $ LOG_TDIR/ip-list.log] puis chat $ LOG_TDIR/ip-list.log | Trier | uniq > $ LOG_TDIR/templist.log Fi chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep '[0-9]+ .[0-9]+ .[0-9]+ .[0-9]+. + connecté' | sed -e 's /.* [INFO] s // g' -e 's / [//t/g[//t/g[//t/g[//t/g' -e 's /:.*// g' >> $ LOG_TDIR/templist.log chat $ LOG_TDIR/templist.log | Trier | uniq -w 4 > $ LOG_TDIR/ip-list.log rm $ LOG_TDIR/templist.log chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep 'connecté | connexion perdue' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]. ([a-zA-Z0-9_] 1, ). 1, connecté / 1 t 2: connecté / g' -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]. ([a-zA-Z0-9_] 1, ). Connexion perdue. * / 1 t 2: déconnecté / g' >> $ LOG_TDIR/$ LOG_NEWDIR/ connexions-$ DATE.bûche chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep '<[a-zA-Z0-9_]+>| [CONSOLE]' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]./1 / g' >> $ LOG_TDIR/$ LOG_NEWDIR/bavarder-$ DATE.bûche chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep 'Exception interne | erreur' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]./1t/g' >> $ LOG_TDIR/$ LOG_NEWDIR/les erreurs-$ DATE.bûche ;; ################################################## ############### "sauvegarde") mkdir -p $ BKUP_PATH si [[[[-e $ MC_PATH/$ WORLD_NAME ] puis si [[[[$ ONLINE -eq 1 ] puis écho "Serveur en marche, avertissant les joueurs: sauvegarde par 10." écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Sauvegarde de la carte en 10 secondes"`"; dormir 10 écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Maintenant, sauvegardez la carte …"`" écho "Emission de la commande save-all, attendez 5s …" écran -S $ SCREEN_NAME -p 0 -X choses "`printf "sauver-tout r"`"; dormir 5 écho "Envoi de la commande de sauvegarde …" écran -S $ SCREEN_NAME -p 0 -X choses "`printf "save-off r"`"; dormir 1 Fi CD $ BKUP_PATH DATE =$ (date +% Y-% m-% d-% Hh% M) FILENAME =$ WORLD_NAME$ DATE BACKUP_FILES =$ BKUP_PATH/liste.$ DATE si tester `date +% H` -qq 0 -o ! -F $ BACKUP_FULL_LINK puis # Effectuer une sauvegarde complète et supprimer les anciens fichiers incrémentiels FILENAME =$ FILENAME-full.tgz # Supprimer les incrémentales antérieures à $ BKUP_DAYS_INCR # Supprimer les archives complètes antérieures à $ BKUP_DAYS_FULL trouver ./$ WORLD_NAME*-incr.tgz -type f -mtime +$ BKUP_DAYS_INCR -impression > purgeliste trouver ./$ WORLD_NAME*-full.tgz -type f -mtime +$ BKUP_DAYS_FULL -impression >> purgeliste rm -f `purgiste de chat` rm -f purgelist # Maintenant, faites notre sauvegarde complète pushd $ MC_PATH trouver $ WORLD_NAME -type f -print > $ BACKUP_FILES tar -zcvf $ BKUP_PATH/$ FILENAME –files-from =$ BACKUP_FILES popd rm -f $ BACKUP_FULL_LINK $ BACKUP_INCR_LINK l-s $ FILENAME $ BACKUP_FULL_LINK autre # Faire une sauvegarde incrémentielle FILENAME =$ FILENAME-incr.tgz pushd $ MC_PATH trouver $ WORLD_NAME -la réponse $ BACKUP_FULL_LINK -type f -print > $ BACKUP_FILES tar -zcvf $ BKUP_PATH/$ FILENAME –files-from =$ BACKUP_FILES popd rm -f $ BACKUP_INCR_LINK l-s $ FILENAME $ BACKUP_INCR_LINK Fi rm -f $ BACKUP_FILES si [[[[$ ONLINE -eq 1 ] puis écho "Emission d'une commande de sauvegarde …" écran -S $ SCREEN_NAME -p 0 -X choses "`printf "enregistrer sur r"`"; dormir 1 écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dire que la sauvegarde est terminée, amusez-vous!"`" Fi écho "Le processus de sauvegarde est terminé." autre écho "Le monde "$ WORLD_NAME " n'existe pas."; Fi;; ################################################## ############### "cartographie") si [[[[-e $ CARTO_PATH ] puis si [[[[-e $ MC_PATH/$ WORLD_NAME ] puis si [[[[$ ONLINE -eq 1 ] puis écho "Emission de la commande save-all, attendez 5s …"; écran -S $ SCREEN_NAME -p 0 -X choses "`printf "sauver-tout r"`"; dormir 5 écho "Envoi de la commande de sauvegarde …"; écran -S $ SCREEN_NAME -p 0 -X choses "`printf "save-off r"`"; dormir 1 écran -S $ SCREEN_NAME -p 0 -X choses "`printf "La cartographie cartographique a commencé."`" Fi mkdir -p $ MAPS_PATH DATE =$ (date +% d-% m-% A-% Hh% M) FILENAME =$ WORLD_NAME-carte-$ DATE CD $ CARTO_PATH écho "Cartographie en cours …" ./c10t -w $ MC_PATH/$ WORLD_NAME/ -o $ FILENAME.png -q -s mv *.png $ MAPS_PATH CD $ MC_PATH écho "La cartographie est terminée." si [[[[$ ONLINE -eq 1 ] puis écho "Emission d'une commande de sauvegarde …" écran -S $ SCREEN_NAME -p 0 -X choses "`printf "enregistrer sur r"`"; dormir 1 écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dire la cartographie de la carte est faite. r"`" Fi autre écho "Le monde "$ WORLD_NAME " n'existe pas."; Fi autre écho "Le chemin vers cartographier semble être faux." Fi;; ################################################## ############### "mettre à jour") si [[[[$ ONLINE -eq 1 ] puis arrêt_serveur Fi mkdir -p $ BKUP_PATH écho "Sauvegarde des fichiers binaires actuels …" DATE =$ (date +% d-% m-% Y) CD $ MC_PATH si [[[[$ SERVERMOD -eq 1 ] puis tar -czf minecraft_server-$ DATE.tar.gz minecraft_server.jar Minecraft_Mod.jar rm Minecraft_Mod.jar autre tar -czf minecraft_server-$ DATE.tar.gz minecraft_server.jar Fi mv minecraft_server-$ DATE.tar.gz $ BKUP_PATH écho "Téléchargement de nouveaux fichiers binaires …" wget -N http://www.minecraft.net/download/minecraft_server.jar si [[[[$ SERVERMOD -eq 1 ] puis "Téléchargement de serverMod de hey0 …" mkdir -p ModTmp; CD ModTmp / wget -O Minecraft_Mod.zip http://hey0.net/get.php?dl = serverbeta Décompressez Minecraft_Mod.zip cp bin / Minecraft_Mod.jar $ MC_PATH/Minecraft_Mod.jar CD $ MC_PATH; rm -rf ModTmp Fi si [[[[$ RUNECRAFT -eq 1 ] puis écho "Téléchargement de Runecraft …" mkdir -p ModTmp; CD ModTmp / wget http://llama.cerberusstudios.net/runecraft_latest.zip décompresser runecraft_latest.zip pot uvf $ MC_PATH/minecraft_server.jar in.class o.class mm.class rm.class rn.class rt.class CD $ MC_PATH; rm -rf ModTmp Fi serveur_launch si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ] puis afficher Fi;; ################################################## ############### *) écho "Utilisation: minecraft "; esac autre si [[[[$ ONLINE -eq 1 ] puis afficher autre écho "Le serveur Minecraft semble être hors ligne …" Fi Fi sortie 0
Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.