quinta-feira, 28 de julho de 2011

Kiosk com Slackware

Neste tutorial, irei demonstrar como configurar um kiosk utilizando o Slackware, no qual iremos apenas carregar o xorg para exibição do Firefox em modo fullscreen.

Depois de ter instalado e configurado o Slackware, crie um usuário específico, onde iremos configurar o kiosk. Neste exemplo, iremos criar um usuário com o nome de terminal:
adduser terminal

Após criado o usuário, carregue o gerenciador de janelas:
startx

Inicie o Firefox e defina o site que será exibido no kiosk como página inicial.

Instale o add-on R-kiosk para firefox através deste link.
Este add-on faz com que o Firefox seja executado em modo fullscreen, desabilita todos os menus, barras de ferramentas, comandos de teclado e o botão direito do mouse.

Agora vamos configurar o Slackware para executar o Firefox assim que o modo gráfico for inicializado.
Dentro do diretório /home/terminal crie o arquivo .xinitrc e insira a seguinte linha:
exec /usr/bin/firefox

Configure o firefox para ser executado em modo fullscreen. Para isso, acesso o arquivo /home/terminal/.mozilla/firefox/algumacoisa.default/localstore.rdf e procure pelas linhas:

width="1024"
height="768" />
Defina os valores de resolução desejados nos campos "width" e "height".

Ainda há um problema na nossa configuração. Se deixarmos a configuração como está, quando alguém utilizar o comando ctrl+c, o sistema irá para o modo texto e a conta na qual o Firefox está sendo executado ficará livre para o usuário fazer o que quiser com o sistema, inclusive desconfigurar tudo o que fizemos até agora. Para evitar isso, iremos editar o arquivo .bash_profile no diretório /home/terminal com os seguintes parâmetros:

#!/bin/bash

while true
do
/usr/bin/startx
done
Dessa forma o terminal não irá para o modo texto quando o usuário encerrar o aplicativo com o atalho ctrl+c, ou seja, quando o usuário tentar sair do aplicativo o X simplesmente será reiniciado e tudo voltará a funcionar normalmente.
Agora só falta configurar o Slackware para exibir o browser na tela sem que seja preciso fazer login no sistema, de forma que assim que o terminal for ligado o browser será executado.
Tome cuidado, pois após feita essa configuração nós não iremos mais conseguir logar com outro usuário na máquina, pois a opção de login será desativada.
Para isso, primeiro iremos editar o arquivo inittab:
vim /etc/inittab
E alterar a linha:
1:2345:respawn:/sbin/agetty 38400 tty
por:
1:2345:respawn:/sbin/agetty -n -l /sbin/autologin 38400 tty1
Onde o -n especifica que não queremos que o prompt de login seja apresentado na tela. Já o -l permite invocar um programa específico de login, em substituição ao default (geralmente o /bin/login).
Vamos criar agora o programa de login que será carregado pelo sistema:
vim /sbin/autologin.c
Escreva no arquivo o seguinte conteúdo:
int main() {
execlp( "login", "-f", "terminal", 0);
}
Depois é só compilar:
gcc -o /sbin/autologin /sbin/autologin.c
Edite o arquivo /etc/login.defs e procure por uma linha assim:
#NO_PASSWORD_CONSOLE tty1:tty2:tty3:tty4:tty5:tty6
Mude-a para:
NO_PASSWORD_CONSOLE tty1

Pronto, processo concluído. Para que as alterações sejam processadas para uso futuro sem a necessidade de rebootar o sistema, digite:
init q
E execute o programa que criamos para login automático:
./autologin

Referências:
Slackbook: http://www.slackbook.org
JACK.eti.br: http://www.jack.eti.br/www/

terça-feira, 19 de julho de 2011

Configurando o Zabbix Agent para iniciar automaticamente em servidores CentOS e derivados

No post anterior, demonstrei como configurar o agente do Zabbix para iniciar automaticamente no Debian e em distribuições derivadas, como o Ubuntu.
Essa configuração não é tão simples em todas as distribuições e, como será visto a seguir, no CentOS e distribuições derivadas, como o Trixbox, é um pouco mais complicado, mas também não é nada de outro mundo.

Acesse a pasta /etc/init.d
cd /etc/init.d

Utilizaremos o editor de texto vi para criar o script. Nesse caso, nomeei o arquivo como zabbix_starter.sh:
vi zabbix_starter.sh

Adicione as seguintes linhas no arquivo:
#!/bin/bash
# chkconfig: 2345 95 20
# description: zabbix starter
# This script executes the zabbix agent on the system boot
# processname: zabbix_starter.sh
/usr/local/sbin/zabbix_agentd


Dentro do diretório /etc/init.d, digite:
chmod 755 zabbix_starter.shIsso dará as permissões necessárias para o arquivo ser executado.
Como root, execute o chkconfig para adicionar o script na inicialização do sistema:
sudo /sbin/chkconfig --level 2345 zabbix_starter.sh on

Confira se tudo ocorreu da maneira certa e o script irá ser executado na inicialização:
/sbin/chkconfig --list

Relatório gerado pelo comando /sbin/chkconfig --list
A figura acima mostra que o script zabbix_starter.sh está ativo nos runlevels 2, 3, 4 e 5. O que significa que o script será inicializado com o sistema.
Clique aqui para maiores informações sobre como funciona o runlevel no Linux.


Troubleshooting

Em alguns servidores eu me deparei com a seguinte mensagem de erro:
service doesn't support chkconfig

Esse erro ocorre porque existe um rótulo SELinux que não permite que o arquivo seja executado na inicialização do sistema.
Muitos serviços são executados com seu próprio rótulo SELinux e como o script que criamos não o possui, não irá ser executado.
Para resolver isso, iremos utilizar os seguintes comandos:
chcon system_u:object_r:initrc_exec_t:s0 zabbix_starter.sh

Configurando o Zabbix Agent para iniciar automaticamente no Debian e derivados

Quem trabalha com o Zabbix sabe bem o quanto essa ferramenta é poderosa no que se refere a gerência de redes de computadores, mas como nem tudo é perfeito, o Zabbix tem um inconveniente: toda vez que um servidor Linux é reiniciado é preciso acessar o servidor e "dar um start" no agente.
O problema é pior ainda quando ocorre queda de energia e todos os servidores monitorados são desligados, daí é aquela odisséia de ir em servidor por servidor para iniciar o agente.
Para evitar esse trabalho de presidiário, irei mostrar nesse tutorial como configurar o Zabbix Agent para iniciar junto com os principais processos do sistema. É um procedimento bastante simples, mas que economiza um bom tempo do administrador da rede.

1. Acesse a pasta /etc/init.d
cd /etc/init.d
2. Utilizaremos o editor de texto vim para criar o script. Nesse caso, nomeei o arquivo como zabbix_starter.sh
vim zabbix_starter.sh
3. Adicione as seguintes linhas no arquivo:
#!/bin/bash
/usr/local/sbin/zabbix_agentd
4. Dentro do diretório /etc/init.d, digite:
chmod 755 zabbix_starter.sh
Isso dará as permissões necessárias para o arquivo ser executado.
5. Por último, iremos utilizar o comando update-rc.d para atualizar os diretórios rc.d, adicionando o script na inicialização do sistema:
update-rc.d zabbix_starter.sh defaults