Você está na página 1de 20

Automatizando Tarefas

com Shell Script - Parte I

2
Objetivos da aula

➢ Introdução ao Shell Script;


➢ Conhecer variáveis especiais e operadores;
➢ Criar scripts utilizando a estrutura if;
➢ Enviar e-mail utilizando script;
➢ Criar agendamentos periódicos no cron.

3
Shell Script I
Introdução ao Shell Script
Um script é uma sequência de instruções que são executadas
toda vez que o mesmo é chamado.

Compilados X Scripts
● Binário → Programa compilado interpretado pelo processador
da máquina. Exemplos: C, C++, Fortran ...
● Script → Programa não compilado interpretado por uma shell.
Exemplos: Shell, javascript, php ...

4
Shell Script I
Estrutura de Shell Script
➢ Arquivo de texto;

➢ Extensão não obrigatória;

➢ Cabeçalho => #!/bin/bash;

➢ Comandos estruturados;

➢ Permissão de execução.

5
Shell Script I
Uso de variáveis
Exemplo simples:
#!/bin/bash
USUARIO=aluno
echo $USUARIO

Exemplo com números:


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

6
Shell Script I
Uso de variáveis
Exemplo com comandos:
#!/bin/bash
LISTA=$(awk -F: '$3 >= 1000 {print $1}' /etc/passwd)
TODAY=$(date +%d-%m-%Y)

## Exibe usuários 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

7
Shell Script I
Variáveis especiais
$1 → Armazena primeiro parâmetro, $2 → Armazena segundo
parâmetro, $3 …....
Sintaxe: comando <parâmetro> <parâmetro> <parâmetro>

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

8
Shell Script I
Variáveis especiais
$* → Armazena todos os parâmetros passados sem ter limites;
$# → Armazena a quantidade de parâmetros passados;
$0 → Armazena o nome do script executado.
Exemplo com variáveis especiais:
#!/bin/bash
echo “Os parâmetros passados são $*”
echo “A quantidade de parâmetros passados é $#”
echo “O nome do script é $0”

# ./variaveis Curso Linux 4Linux

9
Shell Script I
Variável $?
A variável interrogação é conhecida por testar o valor de retorno de
qualquer comando quando mostrada após sua execução. Exemplos:
# ls /etc
# echo $?

# 4linux
# echo $?
Resultado é igual a “0” → Comando executado com sucesso!
Resultado diferente de “0” → Existiu algum problema na execução do
comando.

10
Shell Script I
Comando test
O comando test é usado para realizar testes de condicionais
(strings, matemáticas e em arquivos) em “Shell Script”.
● Exemplo com strings:
# test “curso” = “curso” ; echo $?
● Exemplo com variável:
# test -z $CURSO ; echo $?
● Exemplo com expressões matemáticas:
# test 7 -eq 7 ; echo $?

11
Shell Script I
Operadores matemáticos
num1 -eq num2 : num1 é igual a num2 (equal to)
num1 -ne num2 : num1 não é 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 diretório existe.

13
Shell Script I
If
Com o if é possível usar a operações lógicas, permitindo que o
script tome decisões.

Sintaxe:

If [ condição ]; then
comandos
else
comandos
fi

14
Shell Script I

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

15
Shell Script I
Enviar e-mail por linha de comando com “nail”
Instalação
# 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

Opções 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
## Definição de variáveis
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 diretórios /etc/cron.
[hourly|daily|weekly|monthly]:
/etc/cron.hourly → Scripts neste diretório serão executado toda hora;
/etc/cron.daily → Scripts neste diretório serão executado todos os dias;
/etc/cron.weekly → Scripts neste diretório serão executado toda semana;
/etc/cron.monthly → Scripts neste diretório serão executado todos os
meses.

18
Próximos Passos
Para que você tenha um melhor aproveitamento do curso,
participe das seguintes atividades disponíveis no Netclass:
➢ Executar as tarefas do Laboratório dexterlab-4 para treinar a
criação de scripts utilizando estrutura if com envio de email;
➢ Resolver o Desafio para desenvolver um script que envia
email, e postar o resultado no Fórum Temático - Entrega de
Desafios;
➢ Responder as questões do Teste de Conhecimento sobre o
conteúdo visto em aula.
Mãos à obra!

19

Você também pode gostar