você está aqui: Home → Colunistas → Cantinho do Shell
Por Rubens Queiroz de Almeida
Data de Publicação: 14 de Novembro de 2006
Em dois dos meus sites, Aprendendo Inglês e Contando Histórias, eu uso um script cgi que seleciona, dentre o acervo publicado no site, uma mensagem aleatória.
Para ver como funciona, visite o site Aprendendo Inglês ou o site Contando Histórias.
O mecanismo é o mesmo usado no script para gerar os números da loteria, com apenas algumas pequenas modificações.
#!/bin/bash
homedir=/var/www/
cd $homedir/html
# Neste ponto eu defino os limites inferior e superior
# para a seleção das mensagens. O limite inferior é
# 1 e o superior é igual ao número de arquivos existentes
# no diretório. Eu obtenho este número através da combinação
# dos comandos ls e wc.
LOWER=1
LENGTH=`ls *.inc | wc -l`
# Aqui entra o perl novamente, para selecionar um número
# aleatoriamente, entre os limites fornecidos
Random=`perl -e "print int(rand($LENGTH+1))+$LOWER;"`
# Atribuimos à variável Display o nome do arquivo
# selecionado aleatoriamente. O comando ls lista
# todos os arquivos do diretório e o sed seleciona,
# da lista completa, apenas o nome do arquivo.
# A variável Random contém o número aleatório gerado
# e o sed imprime apenas a linha correspondente a este
# número, que é o nome do arquivo que o script cgi
# exibirá na tela
Display=`ls | sed -n -e ${Random}p`
# A seguir vem a montagem da página html. Como padrão,
# temos as duas linhas com os comandos "echo" e em seguida
# o conteúdo da página gerada. Os comandos "cat" logo a seguir
# ecoam para a tela o conteúdo de três arquivos:
# 1. head.inc: cabeçalho da página html
# 2. $Display: o arquivo selecionado aleatoriamente
# 3. rodape.inc: rodapé da página html
echo "Content-type:text/html";
echo
cat $homedir/inc/head.inc
cat $Display
cat $homedir/inc/rodape.inc
echo "</body></html>"
Este foi um exemplo muito simples, para finalidades didáticas. Este script pode ficar muito sofisticado, criando páginas html com css e qualquer outro recurso que estiver à mão.
Sabe fazer diferente ou melhor? Envie-nos suas idéias preenchendo o campo de comentário logo a seguir.