o primeiro passo foi definir que informações eu queria acessar. considerei que a saída dos comandos uptime, hostname e sensors seriam bastante. o uptime joga o tempo que o servidor está ligado e sua carga média nos últimos 1, 5 e 15 minutos. mais sobre a carga você encontra aqui. o hostname faz o óbvio. já o sensors joga dados como temperatura na tela. para instalação das ferramentas necessárias, dêem uma olhada aqui (para Ubuntu).
agora como trabalhar com sockets e shell script. no site da O'Reilly tem uma ótima explicação sobre uma ferramenta genial chamada netpipes. com ela, é possível direcionar a entrada e saída de scripts para conexões TCP. basta fazer o script como se ele fosse executar localmente. não cheguei a fazer nenhum padrão de comunicação mais complexo, mas as aplicações são inúmeras.
o script final ficou assim:
simples, não? salvei em um arquivo com o nome hostInformationState.sh . agora qual seria o comando para torná-lo um servidor em execução? mais simples ainda:
#!/bin/bash
HOSTNAME=`/bin/hostname`;
UPTIME=`/usr/bin/uptime`;
SENSORS=`/usr/bin/sensors | grep Core `;
echo "***************************************************************************************************************";
echo "Printing host information state.";
echo "Hostname: $HOSTNAME";
echo "Uptime: $UPTIME";
echo "Temperature:"
echo $SENSORS;
echo "***************************************************************************************************************";
pronto. e qual seria o comando para recuperar tais informações? o servidor está escutando na porta 30000, então um telnet bastaria. mas caso deseje algo mais limpo, o cliente do netpipes também permite:
faucet 30000 --out ./hostInformationState.sh
hose SERVIDOR 30000 --netslave
com o serviço executando em várias máquinas, já é fácil construir um script que colete toda a informação de várias máquinas. e se aprofundando nos links acima, dá para construir coisa bem complexa apenas com shell script. o quanto isso é recomendável fica a cargo do leitor descobrir.
Post a Comment
Nenhum comentário:
Postar um comentário