Você está na página 1de 28

Programação em Shell Script

Conteúdo da Aula

Linguagem Shell Script


Operadores e Parâmetros
Estruturas Condicionais
Estruturas de repetição e Funções
Programação em Shell Script
Linguagem Shell Script

Shell Script é a linguagem nativa do interpretador de comandos


Bash, Bash por sua vez é a shell padrão de ambientes Linux. Shell
Script é uma linguagem interpretada, portanto não necessita de
compilação para ser executada e funciona sobre o paradigma
estruturado.

O paradigma estruturado funciona através do estruturamento de


blocos de código que são acessados mediante a leitura top-down
do código ou de instruções compiladas no caso de linguagens
compiladas, usaremos o Shell Script como uma poderosa
ferramenta de automação em nosso ambiente.
Programação em Shell Script

Operadores e Parâmetros

Alguns operadores aritméticos, comparativos, unários e binários

nt → Mais novo que


ot → Mais antigo que
d → Diretório existe
+ → Adição
- → Subtração
* → Multiplicação
Programação em Shell Script

Operadores e Parâmetros

Alguns operadores aritméticos, comparativos, unários e binários

/ → Divisão
eq ou == → Igual
ne ou != → Não igual
gt ou > → Maior que
ge ou >= → Maior ou igual
lt ou < → Menor
Programação em Shell Script

Operadores e Parâmetros

Alguns operadores aritméticos, comparativos, unários e binários

le ou <= → Menor ou igual


e → Existe
% → Módulo
** → Exponenciação
! → Negação
++ → Incremento
Programação em Shell Script

Operadores e Parâmetros

Alguns operadores aritméticos, comparativos, unários e binários

-- → Decremento
&& ou AND → Conjunção lógica (& lógico)
|| ou OR → Disjunção lógica (OU lógico)
Test ou [ ] → Testa uma operação lógica
set ou unset → Define valores no ambiente de sistema
env → Exibe variáveis de ambiente user
Programação em Shell Script

Operadores e Parâmetros

Alguns operadores aritméticos, comparativos, unários e binários

$? → Variável de controle de erros


expr → Executa operação aritmética

Abaixo abordaremos diversos exemplos com operações


aritméticas e estruturas de decisões para manipular o fluxo de
código.
Buscas Avançadas e Editores
Operadores e Parâmetros

Teste a identificação de parâmetros através de um script


# vim parametros.sh

#!/bin/bash

echo "Os parametros informados foram $*"


echo "O numero de parametros é $#"
ocho "O parametro 1 e $1 e o 2 e $2"
echo "O script se chama $0"
Buscas Avançadas e Editores
Operadores e Parâmetros

Salve e de permissão de execução para o script


# chmod u+x parametros.sh

Teste a execução do script


# ./parametros.sh teste testado testando testei
#./parametros.sh teste T3 s t 3t Tes te 12
# chmod u+x parametros.sh `seq 1 25`
# chmod u+x parametros.sh
Buscas Avançadas e Editores
Operadores e Parâmetros

Em programação utilizamos condições para manipular o fluxo de


execução em uma aplicação, estas estruturas permitem o desvio
de código mediante uma decisão tomada após a avaliação de um
dado lógico que pode ser representado como TRUE ou FALSE.

As estruturas condicionais que abordaremos são if, eles, elif e


case. Então abra o terminal e incie a criação de seu primeiro script.

# mkdir /root/scripts
# cd /root/scripts
Buscas Avançadas e Editores
Estruturas Condicionais

# vim finduser.sh

#!/bin/bash

echo 'Entre com o nome do usuário: '


read NUSER

UFIND=`getent passwd $NUSER`


if [ $UFIND ] ; then
Buscas Avançadas e Editores
Estruturas Condicionais

echo "O usuario $NUSER existe"


echo "Exibindo informacoes do usuario:"
id $NUSER
groups $NUSER
chage -l $NUSER
else
echo "O usuario $NUSER não existe"
fi
Buscas Avançadas e Editores
Estruturas Condicionais

# chmod u+x finduser.sh

Teste a execução do script


# ./finduser.sh analista
# ./finduser.sh bill

Faça o script sysinfo.sh


# vim sysinfo.sh
Buscas Avançadas e Editores
Estruturas Condicionais

#!/bin/bash

HORA=`date | cut -d' ' -f4`


TIME=`uptime | awk -F" " '{print $3}' | sed -e s'|,||g'`
USERS=`uptime | awk -F" " '{print $4}`

echo 'Escolha a opção de informacoes: '


echo 'Horario do sistema [ 1 ]'
Buscas Avançadas e Editores
Estruturas Condicionais

echo 'Uptime do sistema [ 2 ]'


echo 'Usuarios autenticados [ 3 ]'
echo 'Terminar execucao [ 4 ]'
read OPT

case $OPT in
1)
echo "Hora do sistema: $HORA"
;;
Buscas Avançadas e Editores
Estruturas Condicionais

2)
echo "O sistema esta ligado a: $TIME"
;;
3)
echo "O numero de usuarios logado e: $USERS"
;;
4)
echo "SAIR"
;;
Buscas Avançadas e Editores
Estruturas Condicionais

*)
echo "Opcao invalida"
;;
esac

Adicione permissão de execução ao script e faça e execute


# chmod u+x sysinfo.sh
# ./sysinfo.sh
Buscas Avançadas e Editores
Estruturas de repetição

A partir deste ponto abordaremos estruturas de repetição, os


chamados loops, estas estruturas serão de extrema utilidade para
execução de tarefas que envolvam a coleta de dados
padronizados ou instruções em ordem sequencial.

Abordaremos neste tópico a manipulação de estruturas do tipo


while, until e for através de exemplos que devem ser reproduzidos
e executados em seu terminal para uma melhor compreensão
sobre o funcionamento destas estruturas.
Buscas Avançadas e Editores
Operadores e Parâmetros

# vim hostup.sh
!#/bin/bash

echo 'Entre com o IP ou FQDN do host'


read IPHOST

COUNT=1

while ping -c1 $IPHOST &>> /dev/null


Buscas Avançadas e Editores
Operadores e Parâmetros

do
echo "ICMP $COUNT – Host $IPHOST online"
sleep 1.0
lett COUNT++
done

Atribua permissão de execução e teste o script


# chmod u+x hostup.sh
# ./monitor.sh
Buscas Avançadas e Editores
Operadores e Parâmetros

# vim userlog.sh

!#/bin/bash

echo 'Entre com o nome de usuario


read NOME

USER=`w | awk -F" " '{print $1} | grep $NOME | uniq`


Buscas Avançadas e Editores
Operadores e Parâmetros

until $USER &>> /dev/null


do
HORA=`date | cut -d' ' -f4`
echo "Usuario $USER conectado as $HORA” ; Sleep 1.0
USER=`w | awk -F" " '{print $1} | grep $NOME | uniq`
done

Habilite a execução e teste o script


# chmod u+x userlog.sh ; ./userlog.sh analista
Buscas Avançadas e Editores
Operadores e Parâmetros

# vim mauth.sh

#!/bin/bash

echo 'Digite o e-mail: '


read EMAIL

DATA=`date +%Y-%m-%d`
Buscas Avançadas e Editores
Operadores e Parâmetros

for I in passwd shadow group gshadow


do
INFO=`getent $I`
echo -e "\n$INFO\n" | mail -s "$HOSTNAME-$DATA" $EMAIL
done

Habilite a execução e teste o script


# chmod u+x mauth.sh
# ./mauth.sh

Você também pode gostar