He estado tratando de configurar un sistema de copia de seguridad automatizado para un servidor de Minecraft, y tengo problemas con la pantalla, específicamente cuando uso 'screen -r sessionname -X "/var/minecraft/somebatchfile"', no pasa nada.
El flujo de mi proceso es algo así en este momento:
screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh
Esto inicia el servidor de Minecraft sin ningún problema. Sin embargo, el problema es que incluso los seguimientos simples como este fallan:
screen -r minecraft -X "stop"
No recibo ningún mensaje de error o mensaje de éxito, y el servidor en realidad no desconecta a los clientes ni se apaga, como debería. Supongo que estoy haciendo algo mal, pero no sé qué. ¿Hay algún error obvio que estoy cometiendo? He leído un poco la página del manual, pero no tengo suerte para resolverlo por mí mismo.
Respuesta aceptada:
Tienes que dar el parámetro -X
una screen
comando, creo que quieres "rellenar" un comando del servidor de Minecraft en la pantalla screen
sesión.
screen -r minecraft -p 0 -X stuff "stop $(printf 'r')"
El printf
envía un retorno de carro, por lo que se ejecuta el comando "detener". -p 0
se asegura de que los caracteres se envíen a la ventana de pantalla inicial.
Por enviarlo a través de ssh
tienes que encerrar el comando en " "
(también podría usar ` `
, pero eso no le permitiría hacer la sustitución del comando).
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action! $(echo -ne 'r')""
¡Cuidado con eso !
es una palabra reservada, tienes que escaparla.
También es posible incluir una nueva línea generada por el usuario en el comando para ejecutarlo:
ssh -t -i ~/.ssh/id_dsa [email protected]_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"
¡Escapando !
no es necesario aquí.