shell

zFenix

zFenix

zFenix é um script muito simplório que simplesmente fica monitorando via ping um determinado site, avisando quando ele mudar de up pra down ou vice-versa. E fica o ícone ali na bandeja...

Veja o código:

# Recebe via parâmetro de chamada a URL a verificar
SERVER=$1
VERSION="0.1"
# Pinga três vezes
PINGCOUNT=5
# Espera 5s entre um ping e outro
INTERVAL=5
# Diretório onde estão as imagens SVG
SVGPATH="/usr/share/icons/zfenix"

# uso interno
PREVIOUS=0
# loop eterno. A cada ciclo espera um tempo e executa
while sleep $INTERVAL; do
    ping -c $PINGCOUNT $SERVER > /dev/null
    ACTUALSTATUS=$?
    if [ ! "$ACTUALSTATUS" -eq "$PREVIOUS" ]
    then
        # se o status mudou, então alerte com um dialog e mude o ícone na bandeja
        if [ "$ACTUALSTATUS" -eq "0" ]
        then
            zenity --info --title="zFenix $VERSION" --text="Servidor $SERVER está on agora"
            SVGFILE=$SVGPATH"/up.svg"
        else
            zenity --warning --title="zFenix $VERSION" --text="Servidor $SERVER caiu"
            SVGFILE=$SVGPATH"/down.svg"
        fi
    fi
    PREVIOUS=$ACTUALSTATUS
    echo icon:$SVGFILE
done| zenity --notification --text="Monitorando $SERVER" --listen

bc: Calculadora Shell ou Linguagem?

De acordo com o arquivo README do GNU bc, em tradução livre, GNU bc é uma linguagem de processamento numérico de precisão arbitrária. Sua sintaxe é similar ao C, mas difere em muitas áreas substanciais. Ela suporta execução interativa de comandos. O bc é um utilitário incluído no padrão POSIX P1003.2/D11.

Até hoje eu conhecia o bc como "aquela ferramentazinha legal que quebra galho na hora de fazer contas simples". Por exemplo, quanto dá em bytes 3G? Claro, 3*1024*1024*1024! Mas como calcular isso dá trabalho, eu simplesmente chamava o bc pelo shell, escrevia essas contas simples, mas trabalhosas e ele mostrava prontamente o resultado: "3221225472" (3.221.225.472, pra quem, como eu, prefere ler números com pontos :-P).

Mas a novidade (ao menos para mim) é que o bc não é só uma "calculadora no shell", ele permite fazer muito mais coisas!

De posse dessas informações, escrevi para bc aquele velho algoritmo de achar raízes de equações de segundo grau. Fiz em 16 linhas sem me preocupar com nenhum possível recorde nem nada. O arquivo está em anexo para servir como exemplo para mais pessoas que não conheçam o bc.

É claro que o bc não vai resolver todos os problemas de programação. Mesmo sendo uma linguagem, é uma linguagem muito restrita, mas dá pra brincar, principalmente se você curte Matemática...

Special: 
Subscribe to RSS - shell

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0