Tutoriales / script de actualización del servidor Linux

Quien soy
Pau Monfort
@paumonfort
Autor y referencias
advertencia  Dado que esta es una página web y cualquiera puede modificar cualquier página en cualquier momento, se sugiere que no utilice este script, sino que simplemente lo utilice como una guía para escribir el suyo. Este tutorial es exclusivo de Java Edition. 

Este es un script bash detallado para actualizar un servidor de Minecraft vanilla. Los parámetros predeterminados se pueden modificar dentro del script o pasar como parámetros. La versión de instalación de destino será la última versión predeterminada, aunque se puede especificar cualquier versión.



Este script se escribió en CentOS 7, pero debería funcionar para cualquier distribución de Linux compatible con POSIX siempre que las dependencias estén disponibles.

Dependencias

Este script se basa en cURL para manejar la descarga de manifiestos de Mojang y el archivo JAR del servidor en sí. El analizador JSON jq se utiliza para extraer la información relevante de los manifiestos.

En CentOS 7, jq está disponible a través del repositorio EPEL. En otras distribuciones, puede estar disponible o puede requerir la instalación desde la fuente.

Para instalar las dependencias requeridas en CentOS 7, realice los siguientes comandos

yum actualizar yum -y instalar epel-release yum -y instalar curl jq

Para instalar las dependencias requeridas en una plataforma Debian, ejecute los siguientes comandos



sudo apt-get update sudo apt-get install curl jq -y


Uso

Este script solo maneja la actualización del archivo JAR del servidor. Si necesita detener el servidor, cambiar los permisos en el archivo recién descargado e iniciar el servidor nuevamente después, se recomienda un script de envoltura. A continuación, se muestra un simple script de contenedor de ejemplo para una configuración que usa un usuario y un grupo separados para el servidor, y un servidor que se inicia y detiene a través de systemd.

Por favor tenga cuidado. Si bien estos scripts funcionaron cuando se publicaron originalmente, cualquiera puede editar la página web y, además, su sistema o configuración pueden ser diferentes a los que se usaron para crearlos.

updatemc.sh

#! / bin / sh # ------------ # Envoltorio para updatemcjar.sh # ------------ JAR_PATH = "/ home / minecraft / server / server. jar "# Cambia esto para que apunte a tu servidor.jar echo" Deteniendo Minecraft "systemctl stop minecraft echo" Minecraft detenido "./updatemcjar.sh --jar-path $ JAR_PATH -y chown minecraft: minecraft $ JAR_PATH #Cambia tu usuario & grupo si es necesario chmod 750 $ JAR_PATH chmod + x $ JAR_PATH echo "Iniciando Minecraft" systemctl iniciar minecraft echo "Minecraft iniciado"

El script principal en sí mismo hace todo el trabajo pesado y tiene muchos parámetros configurables según su configuración.

updatemcjar.sh

#! / bin / sh # ---------------------------------------- # Un shell script para actualizar el archivo jar del servidor de Minecraft en servidores Linux los archivos de manifiesto y jar # jq Para analizar los manifiestos # # # ---- IMPORTANTE ---- # Este script simplemente actualiza el jar del servidor de Minecraft. # Envuelva este script en un script de envoltura para encargarse de detener e # iniciar su servidor según su configuración. # Si necesita cambiar los permisos en el servidor jar final, hágalo # dentro de ese script warpper también. # # Ejemplo de secuencia de comandos de envoltura: # systemctl stop minecraft # ./updatemcjar.sh -y --jar-path "/srv/minecraft/server.jar" # sudo chown minecraft: minecraft "/srv/minecraft/server.jar" # sudo chmod 750 "/srv/minecraft/server.jar" # sudo chmod + x "/srv/minecraft/server.jar" # systemctl iniciar minecraft # ----------------- ----------------------- # Error de secuencia de comandos en errores establecidos -e # Configuración predeterminada (se puede cambiar a través de parámetros) TEMP_DIR = '/ tmp / updatemc / 'JAR_PATH =' / home / minecraftuser / minecraftdir / server.jar 'VERSION_MANIFEST =' https: //launchermeta.mojang.com/mc/game/version_manifest.json '# Rutas de salida NORMAL_OUT = / dev / stdout ERROR_OUT = / dev / stderr # Banderas de parámetros FLAG_FORCE = FLAG_VERSION = FLAG_CONFIRM = FLAG_TEST = # Uso de la página de ayuda () {echo echo "---------------------------- ------------ "echo" $ 0 - Una herramienta para actualizar fácilmente el jar del servidor de Minecraft "echo" Escrito por: Andrew Haskell - Distribuido bajo la Licencia MIT (MIT) "echo echo" Dependencias: " echo "cURL Incluido en la mayoría de distri butions package repositories "echo" jq Verifica tus repositorios de distribución o compila desde la fuente "echo echo" Uso: $ 0 [opciones] "echo echo" -f, --force Si la versión de destino SHA1 coincide con la SHA1 del archivo actual, fuerza la actualización de todos modos , implica - sí "eco" -y, - sí Omitir confirmación de actualización "eco" -v, --versión Especifica una versión de destino diferente. Sin este parámetro, se utiliza la última versión de lanzamiento "echo" -t, --test Prueba la versión de destino SHA1 contra el SHA1 del archivo actual sin cambiar ningún archivo "echo" -s, --silent Suprimir la salida del script, implica --sí "echo" --no-err Suprime los mensajes de error (¡Peligroso!) "echo" --temp-dir Especifica un directorio temporal diferente, el valor predeterminado es $ TEMP_DIR "echo" --jar-path Especifica una ruta JAR final diferente, el valor predeterminado es $ JAR_PATH "echo" --manifest Especifica una URL de manifiesto de versión diferente, el valor predeterminado es $ VERSION_MANIFEST "echo" -h, --help Imprime este mensaje de ayuda "echo echo" Examinar Uso: "echo" $ 0 Ejecuta el script normalmente "echo" $ 0 -f Forzar la actualización del JAR existente "echo" $ 0 -v 1.8.1 -y Actualizar a 1.8.1 sin pedir confirmación "echo echo" ------------------ ---------------------- "echo} # Verifique los parámetros del script mientras [" $ 1 "! =" "]; haga caso $ 1 en -f | --force ) FLAG_FORCE = 1 FLAG_CONFIRM = 1 ;; -v | --version) shift FLAG_VERSION = $ 1 ;; -y | --sí) FLAG_CONFIRM = 1 ;; -s | --silent) NORMAL_OUT = / dev / null FLAG_CONFIRM = 1 ;; --no-err) ERROR_OUT = / dev / null ;; --temp-dir) shift TEMP_DIR = $ 1 ;; --jar-path) shift JAR_PATH = $ 1 ;; --manifest) shift VERSION_MANIFEST = $ 1 ;; -t | --prueba) FLAG_TEST = 1 ;; -h | --help) salida de uso ;; *) echo "Opción incorrecta especificada" salida de uso 1 ;; esac shift done echo "Borrando directorio temporal: $ TEMP_DIR"> $ NORMAL_OUT mkdir -p $ TEMP_DIR DOWNLOADED_JAR = "$ {TEMP_DIR} server.jar" if [-e $ DOWNLOADED_JAR] then rm -f $ DOWNLOADED_JAR fi echo "Descargando versión Manifest from: $ VERSION_MANIFEST "> $ NORMAL_OUT VERSION_MANIFEST_DATA = $ (curl -s" $ VERSION_MANIFEST ") echo" Listo "> $ NORMAL_OUT echo" Analizando Versión Manifest "> $ NORMAL_OUT VERSION_LATEST = $ (echo" $ VERSION_MANIFESTq -DATA "| .latest.release ') VERSION_TARGET = $ VERSION_LATEST echo "Última versión lanzada: $ VERSION_LATEST"> $ NORMAL_OUT if [-n "$ FLAG_VERSION"] luego VERSION_TARGET = $ FLAG_VERSION echo "Versión de destino para descargar: $ VERSION $ NORMALGET_ fi"> PACKAGE_MANIFEST = $ (echo "$ VERSION_MANIFEST_DATA" | jq -r --arg VERSION_TARGET "$ VERSION_TARGET" '.versiones |. | select (.id == $ VERSION_TARGET) | .url ') echo "Done"> $ NORMAL_OUT if [-z "$ PACKAGE_MANIFEST"] then echo "No se pudo encontrar la versión de destino: $ VERSION_TARGET dentro del archivo de manifiesto. ¿Se especificó incorrectamente la versión de destino? De lo contrario, vuelva a verificar manualmente el manifiesto de la versión de Mojang "> $ ERROR_OUT exit 1 fi echo" Descargando el manifiesto del paquete desde: $ PACKAGE_MANIFEST "> $ NORMAL_OUT PACKAGE_MANIFEST_DATA = $ (curl -s" $ PACKAGE_MANIFEST ") echo" Done "> $ NORMAL_OUT echo "Analizando el manifiesto del paquete"> $ NORMAL_OUT SERVER_NEWJAR_URL = $ (jq -rn --argjson url "$ PACKAGE_MANIFEST_DATA" '$ url.downloads.server.url') SERVER_NEWJAR_SHA1 = $ (jq -rn - $EST_DATA_DATA_1 " '$ sha1.downloads.server.sha1') echo "Listo"> $ NORMAL_OUT echo "Calculando SHA1 de $ JAR_PATH"> $ NORMAL_OUT SERVER_OLDJAR_SHA1 = $ (sha1sum "$ JAR_PATH" | cut -d "" -f 1) echo " JAR antiguo SHA1: $ SERVER_OLDJAR_SHA1 "> $ NORMAL_OUT echo" Nuevo JAR SHA1: $ SERVER_NEWJAR_SHA1 "> $ NORMAL_OUT if [" $ SERVER_OLDJAR_SHA1 "=" $ SERVER_NEWJAR_SHA1 "] luego echo" SHA1 coincide con las sumas. $ JAR_PATH ya es la versión de destino "> $ NORMAL_OUT si [-z" $ FLAG_TEST "] entonces si [-z" $ FLAG_FORCE "] entonces echo" Exiting "> $ NORMAL_OUT exit else echo" Forcing JAR Update "> $ NORMAL_OUT fi else exit fi else echo "Las sumas SHA1 no coinciden. $ JAR_PATH difiere de la versión de destino ". > $ NORMAL_OUT si [-z "$ FLAG_TEST"] entonces si [-z "$ FLAG_CONFIRM"] entonces mientras sea verdadero; ¿Leer -p "Reemplazar $ JAR_PATH con el más reciente? [y / n]: "yn caso $ yn en [Yy] *) break ;; [Nn] *) echo" Exiting "exit ;; *) echo" Por favor responda S (es) o N (o) ";; esac done fi else exit fi fi echo "Descargando un nuevo servidor JAR desde: $ SERVER_NEWJAR_URL a $ DOWNLOADED_JAR"> $ NORMAL_OUT curl -s -L -f -o $ DOWNLOADED_JAR $ SERVER_NEWJAR_URL echo "Hecho"> $ NORMAL_OUT echo "Calculando SHA1 de $ DOWNLOADED_JAR "> $ NORMAL_OUT DOWNLOADED_SHA1 = $ (sha1sum $ DOWNLOADED_JAR | cut -d" "-f 1) echo" Dwn JAR SHA1: $ DOWNLOADED_SHA1 "> $ NORMAL_OUT echo" Nuevo JAR SHA1: $ DOWNAL_LOADED_SORM DOWNLOADED_SHA1 "=" $ SERVER_NEWJAR_SHA1 "] luego echo" Las sumas SHA1 coinciden, procediendo "> $ NORMAL_OUT else echo" Las sumas SHA1 no coinciden, verifica el JAR descargado en: $ DOWNLOADED_JAR "> $ ERROR_OUT exit 1 fi JAR_PATH_BACK_UPATH = $. bak echo "Cambiando el nombre de $ JAR_PATH a $ JAR_PATH_BACKUP"> $ NORMAL_OUT mv $ JAR_PATH $ JAR_PATH_BACKUP echo "Copiando $ DOWNLOADED_JAR a $ JAR_PATH"> $ NORMAL_OUT cp $ DOWNLOADED_JAR $ JAR_SHAAL_PATH "Repetir" FINALIZAR NORMAL $ JAR_SHAAL "echo" 1 = $ (sha1sum $ JAR_PATH | cut -d "" -f 1) si ["$ FINAL_SHA1" = "$ SERVER_NEWJAR_SHA1"] entonces echo "$ JAR_PATH actualizado exitosamente a la versión: $ VERSION_TARGET"> $ NORMAL_OUT exit else echo "SHA1 sumas no coinciden, JAR actual en : $ JAR_PATH NO coincide con la versión que se intenta instalar. Retrotraer "> $ ERROR_OUT echo" Eliminando $ JAR_PATH "> $ ERROR_OUT rm -f $ JAR_PATH echo" Copiando copia de seguridad JAR desde: $ JAR_PATH_BACKUP a $ JAR_PATH "> $ ERROR_OUT cp $ JAR_PATH_BACKUP $ JAR_PATH echo original restaurado.


Tutoriales
Introductorio
  • Pantalla de menú
  • Términos del juego
Supervivencia del recién llegado
  • El primer día / guía para principiantes
  • El segundo día
  • El tercer día
  • Manejo del hambre
  • Cosas que no hacer
  • Trucos y consejos sencillos
  • Tus primeros diez minutos
Refugios
  • Los mejores biomas para hogares
  • Los mejores materiales de construcción
  • Construcción y edificación
  • Navegación
  • Refugios
  • Tipos de refugio
General
  • Guía de logros
  • Guía de avance
  • La mejor guía de encantamientos
  • Rompiendo el lecho de roca
  • Combate
  • Aventura principal completa
  • Creando una aldea
  • Doble empuñadura
  • Finalizar la supervivencia
  • Explorando cavernas
  • Recopilación de recursos en dificultad pacífica
  • Conseguir comida rápidamente
  • Pistones sin cabeza
  • Hitboxes
  • Caballos
  • Mapeo
  • Medición de distancia
  • MINERÍA
    • diamantes
    • Fósiles
    • Escombros antiguos
  • Centro inferior
  • Portales inferiores
  • Supervivencia abisal
  • afiliada
  • Salto de pilar
  • PvP
    • Bases JcJ
  • A prueba de spawn
  • The Void
  • Consejos para ahorrar tiempo
  • Mecánica de la aldea
    • Operar en
  • Minecraft en la educación
  • Cristales finales indestructibles
  • Invocación de jinetes
  • Supervivencia en tormentas
  • Unidades de medida
  • Fallos de rayos X
Desafíos
  • Adquirir un conducto
  • Curar a un aldeano zombi
  • Derrotando templos
  • Derrotar una incursión en una aldea
  • Derrotar una fortaleza abisal
  • Derrotar a un remanente de bastión
  • Derrotar una mazmorra
  • Derrotar a un puesto de saqueadores
  • Derrotar una mansión en el bosque
  • Derrotando un monumento
  • Derrotar una ciudad del fin
  • Derrotar al dragón Ender
  • Derrotando a Wither
Supervivencia no estándar
  • Supervivencia de la aventura
  • Modo incondicional
  • Cómo sobrevivir en una sola área indefinidamente
  • Supervivencia infinita en el desierto
  • Caza
  • Experiencia nómada
  • Supervivencia de Skywars
  • Supervivencia superplana
  • Supervivencia ultra hardcore
  • Supervivencia de la isla
Mapas de desafío
  • Superar un mapa de desafío
  • Crear un mapa de desafíos
Construcciones
  • Añadiendo belleza a las construcciones
  • Burbuja de aire
  • Términos arquitectónicos
  • Construyendo un crucero
  • Construyendo una metrópolis
  • Construyendo una montaña rusa
  • Construyendo casas seguras
  • Construcción de características de agua
  • Paleta de color
  • Creando formas
  • Defensa
  • Refugio del desierto
  • Elevadores
  • Piscina circular sin fin
  • Muebles
  • Patrones de terracota esmaltada
  • Hacer bonitos suelos
  • Arte de pixel
  • Ranchos
  • Tipos de techo
    • Techos curvos
    • Pautas de construcción de techos
    • Decoraciones de techo
  • Puerta secreta
  • Guía de liquidación
  • Casa submarina
  • Paredes y contrafuertes
  • Puerta de agua
  • Transporte en bote a motor
Sostenible
Bloques y artículos
  • Blindaje
  • Comida de hueso
  • Cactus
  • Guijarro
  • Grano de cacao
  • Cultivos (remolacha, zanahoria, papa, trigo)
  • Fruta de coro
  • Huevo
  • Liquen resplandor
  • MIEL
  • Peces
  • Flor
  • Hielo
  • Quelpo
  • Carniceria
  • Hongo
  • Disco de musica
  • Verruga inferior
  • Obsidiana
  • Nieve en polvo
  • Calabaza, Melón
  • Escudo
  • Lana
  • Encurtidos de mar
  • Nieve
  • Caña de azúcar
  • Árbol
  • viene
  • Duplicación
Turbas
  • Agricultura de la mafia
  • Mob Mob
  • Trampas de desove
  • Animales (vacas, cerdos, ovejas)
  • Blaze
  • Araña de las cuevas
  • enredadera
  • Ahogue
  • Enderman
  • guardián
  • Hoglin
  • Golem de hierro
  • Cubo de magma
  • Granja de trueque
  • Agricultura de incursión
  • Limo
  • Calamar
  • salvar las
  • Aldeano
  • Bruja
  • Wither esqueleto
  • Zombi
  • Piglin zombificado
Encantador y fundición
  • Mecánica de encantamiento
  • Mecánica del yunque
  • Fundición automática
  • Fundición manual
Rompiendo bloques
  • Cámara de explosión
  • Jaula marchita
Mecanismos
Redstone básica
  • Recargador de ancla de reaparición automático
  • Puertas lógicas básicas
  • Bloque de comandos
  • Máquinas voladoras
  • Tolva
  • Transporte de artículos
  • Mecanismos
  • Estabilizador de observador
  • Cerraduras de combinación
  • Aleatorizadores
  • Música de Redstone
  • Consejos de Redstone
  • Máquina Rube Goldberg
  • Almacenamiento de caja Shulker
  • Sala de comercio de aldeanos
Detectores
  • Detector de actualización de bloque
  • Detector de actualización del comparador
  • Sensor de luz diurna
  • Detector de día y noche
Minecarts
  • Estación de tren
  • Minecarts
    • Almacenamiento
    • Sistema de almacenamiento
Trampas
  • Golems de nieve
  • Cañones TNT
  • Usos de trampilla
  • Diseño de trampa
  • Trampas
Pistons
  • Usos del pistón
  • Circuitos de pistón
  • Cuasi conectividad
  • Cero tictac
  • Repetidores instantáneos
Redstone (avanzado)
  • Circuitos de redstone avanzados
  • Lógica aritmética
  • Calculadora
  • Estadísticas de mando
  • Reloj por horas
  • código Morse
  • Impresora
  • Computadoras Redstone
  • Telégrafo redstone
Servidores
  • Jugando en servidores
  • Supervivencia multijugador
  • Cárcel de desove
  • Prevención del duelo
  • Unirse a un mundo LAN con cuentas alternativas
Configuración del servidor
  • Configurar un servidor
  • Script de inicio del servidor
  • Script de inicio de FreeBSD
  • Script de inicio de OpenBSD
  • Script de inicio de Ubuntu
  • Configuración de un servidor de Hamachi
  • Configuración de un servidor de Minecraft Forge
  • Configuración de un servidor Spigot
  • Servidor habilitado para Ramdisk
Apoyo técnico
  • Mejora de la velocidad de fotogramas
  • Preguntas frecuentes sobre la ayuda de Minecraft (canal IRC)
  • Actualiza Java
mapas
  • Mapas personalizados
  • Descargas de mapas
  • Etiquetas de comando NBT
  • Caída de bloques
  • Actualización de terreno antiguo usando MCEdit
Paquetes de recursos
  • Crear un paquete de recursos
  • Cargando un paquete de recursos
  • Directorio de sonido
Paquetes de datos
  • Creando un paquete de datos
  • Instalación de un paquete de datos
Add-ons
  • Directrices para creadores de Bedrock Edition
  • Crear paquetes de recursos
    • Avanzado [WIP]
    • Guía de referencia de componentes de entidad
    • Cambiar los modelos de entidad de Minecraft
  • Creando paquetes de comportamiento
  • Crear entidad personalizada
Creación de medios de Minecraft
  • Creando videos
  • Transmisión en vivo
Instalación del juego
  • Instalación de instantáneas
  • Unirse y salir del programa beta de Bedrock Edition
  • Cómo obtener un informe de fallas
  • Instalación de mods de Forge
  • Jugar y guardar Minecraft en una memoria USB
  • Jugar y guardar Minecraft en una memoria USB con el antiguo lanzador
  • Recuperar datos mundiales guardados dañados
  • Ejecute Minecraft a través de Google Drive
  • Guardar datos del juego en Dropbox (solo datos mundiales)
  • Guía de Dropbox de datos guardados
Anticuado
  • Construcción de micro refugios
  • Paquetes de texturas personalizados
  • Cultivo de golem de hierro basado en puertas
  • Tierras lejanas
  • Cómo obtener un informe de fallas
  • Instalando mods
  • Lago artificial
  • Manejo de slimes en modo superflat
  • Refuerzo de minecart
  • Sistema de reinicio del repetidor
  • Supervivencia sin paquetes de datos habilitados
  • Actualizar LWJGL
  • Actualizar Minecraft
  • Encadenamiento de aldea
  • escalera de agua
  • Tranvía de agua


Añade un comentario de Tutoriales / script de actualización del servidor Linux
¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.