Eu uso php para um script de shell para gerenciar meu servidor Minecraft. Eu uso o log do servidor para obter minhas respostas. Aqui está o código que eu uso para listar quem está online. Eu uso tail
para obter as últimas linhas e analisá-las pelo tempo necessário para garantir que a resposta seja posterior ao envio do comando.
#!/usr/bin/php
<?php
function send_cmd( $command )
{
exec('screen -S minecraft -X stuff "'printf "\r' . $command . '\r"'"');
}
function who()
{
if (!is_running())
{
echo 'Server is not running.' . CRLF;
return 4;
}
// Get the current time and send the command
$before = time() - 1;
send_cmd('list');
// Wait for the server to provide a response
while(time() < $before + 5) {
sleep(0.25);
$result = exec('tail ' . __DIR__ . '/server.log | grep "\[INFO\] Connected players"');
$stamp = strtotime(substr($result, 0, 19));
if ($before <= $stamp)
break;
unset($result);
}
if (isset($result))
{
echo $result . CRLF;
echo 'Server responded in ' . ($stamp - $before) . ' seconds.' . CRLF;
return 0;
}
else
{
echo 'Server did not respond.' . CRLF;
return 4;
}
}