12 aula - shell script-2015

43
SHELL SCRIPT Prof a Fl´ avia Pereira dos Santos Instituto Federal Sul Riograndense Curso de Tecnologia em Desenvolvimento de Sistemas para Internet Disciplina: Gerenciamento de Redes de Computadores 29 de Abril de 2015 1 / 43

Transcript of 12 aula - shell script-2015

Page 1: 12   aula - shell script-2015

SHELL SCRIPT

Profa Flavia Pereira dos Santos

Instituto Federal Sul Riograndense

Curso de Tecnologia em Desenvolvimento de Sistemas para Internet

Disciplina: Gerenciamento de Redes de Computadores

29 de Abril de 2015 1 / 43

Page 2: 12   aula - shell script-2015

1 Introducao

2 SHELL SCRIPT

3 Trabalhando com SHELL SCRIPT

4 Exercıcios

5 Trabalhando com SHELL SCRIPT (parte 2)

6 Atividade

29 de Abril de 2015 2 / 43

Page 3: 12   aula - shell script-2015

Introducao Introducao

Introducao

29 de Abril de 2015 3 / 43

Page 4: 12   aula - shell script-2015

Introducao Introducao

Introducao

O shell e o ”prompt”da linha de comando do Unix e Linux, e o querecebe os comandos digitados pelo usuario e os executa. O shell e aligacao entre o usuario e o kernel.

29 de Abril de 2015 4 / 43

Page 5: 12   aula - shell script-2015

Introducao Introducao

Introducao

Para os usuarios do Windows, e facil pensar no shell como umMSDOS melhorado, mas o shell oferece inumeros recurso que vaodesde comandos basicos para navegar entre diretorios e manipulararquivos, ele tambem possui todas as estruturas de uma linguagemde programacao, como IF, FOR, WHILE, variaveis e funcoes. Comisso tambem e possıvel usar o shell para fazer scripts e automatizartarefas.

29 de Abril de 2015 5 / 43

Page 6: 12   aula - shell script-2015

SHELL SCRIPT SHELL SCRIPT

SHELL SCRIPT

29 de Abril de 2015 6 / 43

Page 7: 12   aula - shell script-2015

SHELL SCRIPT SHELL SCRIPT

SHELL SCRIPT

Um script e um arquivo que guarda varios comandos e pode serexecutado sempre que preciso. Os comandos de um script saoexatamente os mesmos que se digita no prompt, e tudo shell.

29 de Abril de 2015 7 / 43

Page 8: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

29 de Abril de 2015 8 / 43

Page 9: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

# date

# df

# w

29 de Abril de 2015 9 / 43

Page 10: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

E melhor fazer um script chamado ”sistema”e colocar estescomandos nele. O conteudo do arquivo ”sistema”seria o seguinte:

#!/bin/bashdatedfw

29 de Abril de 2015 10 / 43

Page 11: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Nao use o sistema como usuario administrador (root), saia e entrecomo um usuario normal;

Use apenas letras minusculas e evite acentos, sımbolos e espaco embranco;

Salve os arquivos dentro de seu diretorio pessoal ($HOME).

29 de Abril de 2015 11 / 43

Page 12: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Tornar o script um arquivo executavel. Use o seguinte comando paraque seu script seja reconhecido pelo sistema como um comandoexecutavel:

$ chmod +x sistema

29 de Abril de 2015 12 / 43

Page 13: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Se o script estiver no diretorio corrente, chame-o com um ”./”nafrente, deste modo:

$ ./sistema

29 de Abril de 2015 13 / 43

Page 14: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

O comando ”echo”serve para mostrar mensagens na tela. Altere oarquivo sistema conforme abaixo:

#!/bin/bash

echo ”Data e Horario:”

date

echo

echo ”Uso do disco:”

df

echo

echo ”Usuarios conectados:”

w

29 de Abril de 2015 14 / 43

Page 15: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Para o script ficar mais completo, vamos colocar uma interacaomınima com o usuario, pedindo uma confirmacao antes de executaros comandos:#!/bin/bashecho ”Vou buscar os dados do sistema. Posso continuar? s/n”read RESPOSTAtest ”$RESPOSTA” = ”n” && exitecho ”Data e Horario:”dateechoecho ”Uso do disco:”dfechoecho ”Usuarios conectados:”w

Ver proximo slide29 de Abril de 2015 15 / 43

Page 16: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

O conteudo da variavel e acessado colocando-se um cifrao ”$”nafrente

O comando test e util para fazer varios tipos de verificacoes emtextos e arquivos

O operador logico ”&&”, so executa o segundo comando caso oprimeiro tenha sido OK. O operador inverso e o ”ll”(pipe)

29 de Abril de 2015 16 / 43

Page 17: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Para colocar cometarios basta iniciar a linha com um ”#”e escrever otexto do comentario em seguida;

Tambem e possıvel colocar comentarios no meio da linha # comoeste.

29 de Abril de 2015 17 / 43

Page 18: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

As variaveis sao a base de qualquer script. E dentro delas que osdados obtidos durante a execucao do script serao armazenados.Para definir uma variavel, basta usar o sinal de igual ”=”e para verseu valor, usa-se o ”echo”: (linha de comando)

$ VARIAVEL=”um dois tres”

$ echo $VARIAVEL

um dois tres

$ echo $VARIAVEL $VARIAVEL

um dois tres um dois tres

$

ATENCAO - Nao podem haver espacos ao redor do igual ”=”

29 de Abril de 2015 18 / 43

Page 19: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Ainda e possıvel armazenar a saıda de um comando dentro de umavariavel. Ao inves de aspas, o comando deve ser colocado entre”$(...)”, veja: (linha de comando)

$ HOJE=$(date)

$ echo ”Hoje e: $HOJE”

Hoje e: Sab Abr 24 18:40:00 BRT

$ unset HOJE

$ echo $HOJE

$

E finalmente, o comando ”unset”apaga uma variavel.

29 de Abril de 2015 19 / 43

Page 20: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

Diferente de outras linguagens de programacao, o shell nao usa osparenteses para separar o comando de seus argumentos, mas sim oespaco em branco. O formato de um comando e sempre:

COMANDO OPCOES PARAMETROS

O comando ”cat -n sistema”mostra o nosso script, com as linhasnumeradas

Exemplo $ cat-n sistema

29 de Abril de 2015 20 / 43

Page 21: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

O ”read”e um comando do proprio shell, ja o ”date”e um executaveldo sistema. Dentro de um script, nao faz diferenca usar um ou outro,pois o shell sabe como executar ambos.

Ha varios comandos que foram feitos para serem usados com o shell(ver pag. 09).

29 de Abril de 2015 21 / 43

Page 22: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT Trabalhando com SHELL SCRIPT

Trabalhando com SHELL SCRIPT

E possıvel combinar comandos, aplicando-os em sequencia, paraformar um comando completo. Usando o pipe ”l”e possıvel canalizara saıda de um comando diretamente para a entrada de outro,fazendo uma cadeia de comandos. (linha de comando)

Exemplo:

$ cat /etc/passwd l grep root l cut -c1-10

root:x:0:0

$

29 de Abril de 2015 22 / 43

Page 23: 12   aula - shell script-2015

Exercıcios Exercıcios

Exercıcios

29 de Abril de 2015 23 / 43

Page 24: 12   aula - shell script-2015

Exercıcios Exercıcios

Exercıcio

1 Crie um script denominado ”path”que mostre o path corrente, qual ousuario que esta logado e por ultimo uma listagem completa dodiretorio /home deste usuario.

2 Crie um script denominado ”backup”que faca uma copia do arquivo”path”para o diretorio /home/bkp e logo apos fazer o desligamento doseu PC apos 2 minutos.

3 Crie um script denominado ”cadastro”que permite criar um usuariodeterminar sua senha e cadastras as informacoes pessoais desteusuario.

4 Crie um script denominado ”verificacao”que mostre o tempo que osistema esta em uso, a versao do kernel, o uso dos discos, o estadoda memoria e se a rede esta funcionando.

5 Crie um script denominado ”grupo”que mostre todos os grupos dosistema.

29 de Abril de 2015 24 / 43

Page 25: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

29 de Abril de 2015 25 / 43

Page 26: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

O canivete suıco dos comandos do shell e o ”test”, que conseguefazer varios tipos de testes em numeros, textos e arquivos. Ele possuivarias opcoes para indicar que tipo de teste sera feito (ver pag. 10).

29 de Abril de 2015 26 / 43

Page 27: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Assim como os comandos do sistema que possuem e opcoes eparametros, os scripts tambem podem ser preparados para receberdados via linha de comando.

Dentro do script, algumas variaveis especiais sao definidasautomaticamente, em especial, ”$1”contem o primeiro argumentorecebido na linha de comando, ”$2”o segundo, e assim por diante.

29 de Abril de 2015 27 / 43

Page 28: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Digite esse script abaixo com o nome de ”argumento”

#!/bin/bash

# argumentos - mostra o valor das variaveis especiais

echo ”O nome deste script e: $0”

echo ”Recebidos $# argumentos: $*”

echo ”O primeiro argumento recebido foi: $1”

echo ”O segundo argumento recebido foi: $2”

29 de Abril de 2015 28 / 43

Page 29: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Ele serve para demonstrar o conteudo de algumas variaveis especiais.(linha de comando)

$ ./argumentos um dois tres

O nome deste script e: ./argumentos

Recebidos 3 argumentos: um dois tres

O primeiro argumento recebido foi: um

O segundo argumento recebido foi: dois

29 de Abril de 2015 29 / 43

Page 30: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

O shell tambem sabe fazer contas. A construcao usada para indicar umaexpressao aritmetica e ”$((...))”, com dois parenteses. (linha de comando)

$ echo $((2*3))

6

$ echo $((2*3-2/2+3))

8

$ NUM=44

echo $((NUM*2))

88

$ NUM=$((NUM+1))

$ echo $NUM

45

29 de Abril de 2015 30 / 43

Page 31: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Assim como qualquer outra linguagem de programacao, o shelltambem tem estruturas para se fazer condicionais e loop. As maisusadas sao if, for e while.

29 de Abril de 2015 31 / 43

Page 32: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Estrutura do IF

if COMANDO

then

comandos

else

comandos

fi

29 de Abril de 2015 32 / 43

Page 33: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Exemplo de IF (Salve o script com nome ”teste”)

#!/bin/bash

echo ”Digite um Numero”

read VARIAVEL

if test ”$VARIAVEL” -gt 10

then

echo ”e maior que 10”

else

echo ”e menor que 10”

fi

29 de Abril de 2015 33 / 43

Page 34: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Ha um atalho para o test , que e o comando ” [ ” Ambos sao exatamenteo mesmo comando, porem usar o ” [ ” deixa o if mais parecido com oformato tradicional de outras linguagens (tem que ter espacos antes edepois [ ])

if [ ”$VARIAVEL” -gt 10 ]

then

echo ”e maior que 10”

else

echo ”e menor que 10”

fi

29 de Abril de 2015 34 / 43

Page 35: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Altere o script ”teste”para que ele pegue o 1 argumento.

$ ./teste 20

e maior que 10

29 de Abril de 2015 35 / 43

Page 36: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Estrutura do FOR

for VAR in LISTA

do

comandos

done

29 de Abril de 2015 36 / 43

Page 37: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Exemplo do FOR (Salve o script com nome ”contando”)

for numero in um dois tres quatro cinco

do

echo ”Contando: $numero”

done

29 de Abril de 2015 37 / 43

Page 38: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Exemplo do FOR (Salve o script com nome ”passo”)

for passo in $(seq 10)

do

echo ”Numero $passo”

done

29 de Abril de 2015 38 / 43

Page 39: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Estrutura do WHILE

while COMANDO

do

comandos

done

29 de Abril de 2015 39 / 43

Page 40: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Exemplo do WHILE (Salve o script com o nome ”contador”)

i=0

while test $i -le 10

do

i=$((i+1))

echo ”Contando: $i”

done

29 de Abril de 2015 40 / 43

Page 41: 12   aula - shell script-2015

Trabalhando com SHELL SCRIPT (parte 2) Trabalhando com SHELL SCRIPT (parte 2)

Trabalhando com SHELL SCRIPT (parte 2)

Exemplo do WHILE (Salve o script com o nome ”loop”)

while :

do

if test -f /tmp/lock

then

echo ”Aguardando liberacao do lock...”

sleep 1

else

break

fi

done

29 de Abril de 2015 41 / 43

Page 42: 12   aula - shell script-2015

Atividade Atividade

Exercıcios

29 de Abril de 2015 42 / 43

Page 43: 12   aula - shell script-2015

Atividade Atividade

Outras Informacoes

Dicas de Shell Script

http://www.dicas-l.com.br/cantinhodoshell/

29 de Abril de 2015 43 / 43