Shell Script – Estrutura de repetição e arrays

Estruturas de repetição em shell script, como em demais linguagens aqui teremos o for, while e o until e irei aproveitar o engajado para passar arrays em Shell Script que ficara perfeito com estrutura de repetição.

FOR

Estrutura bem parecida com a de outras linguagens porém com varias maneiras de implementar, podemos na própria estrutura For definir o numero de elementos “1 2 3 4 5”, ou uma sequencia “seq 10” e ele irá repetir até o fim desta condição.

for [ condição ];
do
#Seu codigo
done

Exemplo:

Continue reading

RaspberryPI – Meu primeiro boot

Um dos computadores de bolso mais famoso de hoje em dia, o Raspberry PI é muito utilizado por hobbystas, eu escolhi ele para ser o carro chefe do meu TCC segue o link para quem quiser ver o que fiz e imaginar o que é possivel criar com esse carinha.
Já tratei sobre o que temos no Raspberry PI neste post e neste outro post sobre o básico que você precisa para você dar vida a plaquinha e agora o que faltava, o processo de instalação, primeiro vamos entender que não temos propriamente dito um disco rígido como um computador mas podemos ter um SO no caso Linux, você pode utilizar uma das versões do próprio site do Raspberry PI como Raspbian, Pidora, RaspBMC, OpenELEC, Risc OS e Arch pretendo abordar todos porém todos ao seu tempo além de mostrar como embarquei um sistema Linux do zero, configurei o kernel para minha aplicação em questão e tudo mais, mas isso é para alguns posts para frente.
Hoje a distribuição utilizada é a Raspbian, se você é um fanboy Linux já deve saber derivado de qual distribuição veio essa, e para quem não sabe é baseado no Debian que foi otimizado para o hardware do Raspberry PI assim como o Pidora é baseado no Fedora.

http://www.raspbian.org/
http://pidora.ca/
Continue reading

Shell Script – Estrutura condicional

Dando continuidade aos posts de Shell Script, agora iremos falar sobre Estrutura Condicional, para quem já desenvolve não é nenhuma novidade, já para quem não esta tão habituado com o termo seria os if e else das linguagens de  ou ainda melhor é onde você irá “testar” uma condição e o script ou programa irá dizer se aquela condição é verdadeira ou falsa, 1 ou 0, true ou false  enfim ae depende do que você quer fazer.

Em Shell script declaramos a estrutura de seguinte maneira:

if [ CONDICAO ];
then
# SE SATISFAZ ENTRA AQUI
else
# SE NAO SATISFAZ ENTRA AQUI
fi

ou

if [ CONDICAO ];
then
# SE SATISFAZ ENTRA AQUI
elif [ OUTRA CONDICAO ];
then
# SE SATISFAZ ENTRA AQUI
else
# SE NAO SATISFAZ ENTRA AQUI
fi

Continue reading

Linux – Conexão SSH lenta no login

Recentemente tentando acessar um servidor novo, percebi uma lentidão para conectar via SSH. Vamos ao caso:

1) Servidor era novo, a versão do openssh-server não era a mais recente no caso 6.5 mas uma que uso em vários servidores sem problema.
2) Latência da conexão baixa, depois de várias requisições ICMP tive um resultado como min/avg/max/mdev = 0.368/0.627/0.706/0.200 ms, então minha rede não era.
3) Em termos de hardware do servidor sem comentários, estava tranquilo. Por vias duvidas até acompanhei algumas coisas monitorando mas, sem problemas.
4) Firewall? Não. Pois com as regras ativas ou limpas era mesma coisa.

Agora as etapas que segui para resolver o problema:

Continue reading

Shell Script – Variaveis

Esta ae um assunto importante de ser visto, Shell Script. Principalmente para usuários Linux e SysAdmin de servidores Linux, utilizei muito em meu TCC para automatizar tarefas e até hoje escrevi apenas um post, acho que vale a pena retomar esse assunto visto que ajudaria muita gente com tudo que aprendi e uso hoje, principalmente em servidores.

E hoje abordarei sobre variáveis, a ideia é a mesma de outras linguagens de programação com a diferença de não ter que informar o tipo antes, e uma variável em shell script pode conter um valor, uma string ou a saída de um comando, vamos ver logo abaixo um exemplo básico.

#!/bin/bash

#Variavel NOME contendo tudo que estiver entre " "
NOME="Cleiton Rafael Bueno de Oliveira"
#Variavel ANO contendo o valor 2014
ANO="2014"
#Variavel VERSAO recebendo o valor 1.0
VERSAO='1.0'

#Quando for utilizar a variável deve-se inserir $ antes do nome da mesma
#caso contrario iríamos mostrar Seu nome: NOME no exemplo abaixo
echo "Seu nome: $NOME"
echo "Estamos no ano $ANO"
echo "Versao deste script $VERSAO"

Continue reading

Arduino – Sensor de temperatura Parte5

Depois de um longo tempo sem postar nada sobre Arduino, segue algo que eu sempre quiser passar aqui no blog mas não tinha um conteúdo para acompanhar, que seria Arduino com interação de banco de dados.

Vamos continuar utilizando todo o material dos posts anteriores porém agora vamos dar sentido a nossa aplicação, fazendo com que os dados coletados do Arduino sejam armazenados em um banco de dados, onde um arquivo será agendado para que de 5 em 5 minutos comunique com o Arduino e salve estes valores (temperatura) em um banco de dados.

Nossa aplicação web ficará assim:

SensorTempArduinoWebcomBanco Continue reading

Linux – Terminal via web

Um titulo um tanto quanto estranho, porém que vai mudar a vida do SysAdmin que estiver lendo isso.
Vamos ao caso:

Nem sempre eu me encontro no computador e quase sempre que estou em algum departamento mais distante ou que eu vá demorar para voltar a minha sala pedem algo com urgência para ser feito, e eu não gosto de acessar via SSH de qualquer computador quanto menos usar softwares como PuTTY, então pesquisei por algo que emulasse ou disponibilizasse um terminal *nix no browser para que de qualquer local da rede eu pudesse acessar.
Então encontrei o shellinabox, deve existir outras alternativas mas esta se encaixou perfeitamente e adotei ela como solução, agora vamos ao procedimento de instalação.

Continue reading

Engenharia da Computação 2013 – TCC

Venho hoje mostrar o resultado de minha ausência a publicar posts no blog, pois hoje 11/11/2013 apresento o meu TCC para graduação de Engenharia de Computação, um projeto que comecei praticamente do zero, utilizando Raspberry PI B, Arduino UNO, Arduino EthernetShield e uma board com SIM900.

Desenvolvi um Shield para o projeto em questão utilizando o Arduino, uma placa para o GPIO do Raspberry PI e uma placa para monitorar a rede elétrica AC.

Segue abaixo fotos do resultado final e o funcionamento, após apresentar o projeto irei publicar posts com as dificuldades que enfrentei em ambas plataformas e o que utilizei.

IMG_20131108_182259 IMG_20131109_130816 IMG_20131109_185003 IMG_20131110_131048 IMG_20131111_013215 IMG_20131109_165024 IMG_20131109_175214 IMG_20131110_133450 IMG_20131110_203008

Expressei neste projeto, tudo que aprendi na faculdade, toda minha experiência e o mais importante, o resultado saiu exatamente como eu queria.

Fiquei muito satisfeito, e vamos ver o que será hoje (rs).

Até a próxima!

Programação C – Vetores

Em programações você irá ouvir e usar muito vetores ou também conhecido como array. Um vetor seria um conjunto de variáveis do mesmo tipo num mesmo “lugar”, eu não disse no mesmo endereço ok?

A declaração seria algo assim em C:

Ex1: int sorteio[8];

Algo parecido com a declaração normal de variáveis, vamos recordar a declaração de uma variável do tipo inteiro:

Ex2: int sorteio;

O uso de array(vetores) seria como no lugar de declarar uma variável do tipo inteiro como no Ex2,  declararíamos 8 int localizados dentro de sorteio, vamos explicar.

Continue reading

Qemu – Emulando o Raspberry PI

Meu TCC estou trabalhando com Linux Embarcado e em especial utilizando o Raspberry PI B. Porém nem todos os dias eu podia levar o Rb PI para a empresa e no horário do almoço realizar testes, ou para a faculdade com medo de danificar no transporte e sem contar que é chato ligar tudo e blá blá blá. Então pensei, será que não tem como eu virtualizar apenas para testar os recursos que irão rodar no ARM e depois só passo a versão final?

E quem procura acha (Google!), vi alguns sites mostrando como criar maquinas virtuais com Qemu, que já uso bastante por sinal, então para ter o Qemu com suporte a arquitetura ARM podemos fazer de duas maneiras:

cleiton@lab-linux:~/projeto/qemu/$ sudo apt-get update
#No Ubuntu
cleiton@lab-linux:~/projeto/qemu/$ sudo apt-get install qemu-kvm qemu-kvm-extras
# No Debian
cleiton@lab-linux:~/projeto/qemu/$ sudo apt-get install qemu

Continue reading