Você está na página 1de 20

Automatizando Tarefas

com Shell Script - Parte I

Objetivos da aula
Introduo ao Shell Script;
Conhecer variveis especiais e operadores;
Criar scripts utilizando a estrutura if;
Enviar e-mail utilizando script;
Criar agendamentos peridicos no cron.

Shell Script I
Introduo ao Shell Script
Um script uma sequncia de instrues que so executadas
toda vez que o mesmo chamado.

Compilados X Scripts

Binrio Programa compilado interpretado pelo processador


da mquina. Exemplos: C, C++, Fortran ...

Script Programa no compilado interpretado por uma shell.


Exemplos: Shell, javascript, php ...

Shell Script I
Estrutura de Shell Script
Arquivo de texto;
Extenso no obrigatria;
Cabealho => #!/bin/bash;
Comandos estruturados;
Permisso de execuo.

Shell Script I
Uso de variveis
Exemplo simples:
#!/bin/bash
USUARIO=aluno
echo $USUARIO

Exemplo com nmeros:


#!/bin/bash
A=10
B=20
echo O resultado da soma `expr $A + $B`
Ou
echo O resultado da soma $(expr $A + $B)

Shell Script I
Uso de variveis
Exemplo com comandos:
#!/bin/bash
LISTA=$(awk -F: '$3 >= 1000 {print $1}' /etc/passwd)
TODAY=$(date +%d-%m-%Y)
## Exibe usurios com UID maior ou igual a 1000
echo $LISTA
## Gera um backup com a data atual
tar cjf /dexter/backup/backup-$TODAY.tar.bz2 /var

Shell Script I
Variveis especiais
$1 Armazena primeiro parmetro, $2 Armazena segundo
parmetro, $3 ....
Sintaxe: comando <parmetro> <parmetro> <parmetro>
Exemplo de uso em linha de comando
# echo Curso Linux 4Linux

Exemplo de uso em Shell Script


#!/bin/bash
echo $1 $2 $3
# ./script Curso Linux 4Linux

Shell Script I
Variveis especiais
$* Armazena todos os parmetros passados sem ter limites;
$# Armazena a quantidade de parmetros passados;
$0 Armazena o nome do script executado.
Exemplo com variveis especiais:
#!/bin/bash
echo Os parmetros passados so $*
echo A quantidade de parmetros passados $#
echo O nome do script $0

# ./variaveis Curso Linux 4Linux

Shell Script I
Varivel $?
A varivel interrogao conhecida por testar o valor de retorno de
qualquer comando quando mostrada aps sua execuo. Exemplos:
# ls /etc
# echo $?
# 4linux
# echo $?
Resultado igual a 0 Comando executado com sucesso!
Resultado diferente de 0 Existiu algum problema na execuo do
comando.

10

Shell Script I
Comando test
O comando test usado para realizar testes de condicionais
(strings, matemticas e em arquivos) em Shell Script.

Exemplo com strings:


# test curso = curso ; echo $?

Exemplo com varivel:


# test -z $CURSO ; echo $?

Exemplo com expresses matemticas:


# test 7 -eq 7 ; echo $?
11

Shell Script I
Operadores matemticos
num1 -eq num2 : num1 igual a num2 (equal to)
num1 -ne num2 : num1 no igual a num2 (not equal to)
num1 -gt num2 : num1 maior que num2 (greater than)
num1 -ge num2 : num1 maior ou igual a num2 (greater or
equal)
num1 -lt num2 : num1 menor que num2 (less than)
num1 -le num2 : num1 menor ou igual a num2 (less or equal)

12

Shell Script I
Operadores para arquivos
-e O arquivo existe (exists);
-nt O arquivo mais novo que (newer than);
-ot O arquivo mais antigo que (older than);
-d O diretrio existe.

13

Shell Script I
If
Com o if possvel usar a operaes lgicas, permitindo que o
script tome decises.

Sintaxe:
If [ condio ]; then
comandos
else
comandos
fi
14

Shell Script I
Exemplo:
#!/bin/bash
echo "Digite o nome do usurio para consulta:"
read USUARIO
RESULTADO=$( getent passwd | grep $USUARIO)
test -z $RESULTADO
if [ $? -eq 0 ] ;then
echo "O usurio $USUARIO no existe!"
else
echo "O usurio existe"
fi

15

Shell Script I
Enviar e-mail por linha de comando com nail
Instalao
# aptitude install heirloom-mailx

Na mesma linha

# wget
http://archive.ubuntu.com/ubuntu/pool/universe/h/heirloo
m-mailx/nail_12.4-1.1_all.deb
# dpkg -i nail_12.4-1.1_all.deb

Opes de uso do comando nail:


-s Define o assunto do e-mail;
-a Define o anexo (arquivo) no e-mail.

16

Shell Script I
Exemplo de script de backup com e-mail
#!/bin/bash
## Definio de variveis
TODAY=$(date +%d-%m-%Y)
EMAIL=administrador@dexte.com.br
## Comandos para o backup
cd /dexter/backup/
tar cjf backup-$TODAY.tar.bz2 /var
## Envio de e-mail com backup em anexo
echo

Backup

efetuado

nail

-s

Backup

-a

backup-$TODAY.tar.bz2 $EMAIL

17

Shell Script I
Verificar e-mail e criar agendamentos
Comando mutt
$ mutt

Agendamentos

nos

diretrios

/etc/cron.

[hourly|daily|weekly|monthly]:
/etc/cron.hourly Scripts neste diretrio sero executado toda hora;
/etc/cron.daily Scripts neste diretrio sero executado todos os dias;
/etc/cron.weekly Scripts neste diretrio sero executado toda semana;
/etc/cron.monthly Scripts neste diretrio sero executado todos os
meses.

18

Prximos Passos
Para que voc tenha um melhor aproveitamento do curso,
participe das seguintes atividades disponveis no Netclass:
Executar as tarefas do Laboratrio dexterlab-4 para treinar a
criao de scripts utilizando estrutura if com envio de email;
Resolver o Desafio para desenvolver um script que envia
email, e postar o resultado no Frum Temtico - Entrega de
Desafios;
Responder as questes do Teste de Conhecimento sobre o
contedo visto em aula.

Mos obra!
19