1 gestão de redes corporativas: tecnologias e segurança administração de sistemas operacionais...

38
1 Gestão de Redes Corporativas: Gestão de Redes Corporativas: Tecnologias e Segurança Tecnologias e Segurança Administração de Sistemas Administração de Sistemas Operacionais Operacionais Programação Shell Programação Shell Vera Schuhmacher [email protected] [email protected]

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

1

Gestão de Redes Corporativas: Gestão de Redes Corporativas: Tecnologias e Segurança Tecnologias e Segurança

Administração de Sistemas Administração de Sistemas OperacionaisOperacionais

Programação ShellProgramação Shell

Vera Schuhmacher – [email protected]

[email protected]

Page 2: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

2

Script shell

O programa shell interpreta os comandos que você digita e os traduz para comandos que o kernel compreende.• o shell é uma linguagem de programação completa, possuindo variáveis, construções condicionais, interativas e ambiente adaptável ao usuário.• Os comandos do Shell se comunicam entre si por meio de uma interface simples e coerente chamada pipeline.• O Shell permite que o usuário realize suas atividades sem afetar qualquer outro processo que não lhe pertence. Quando um usuário conecta-se a um sistema Unix, o sistema operacional inicia automaticamente uma cópia do Shell, sob a qual o usuáriopoderá realizar qualquer função disponível.

Page 3: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

3

Script shell

Nome Shell Desenvolvido por Onde Comentários

BASH ( Bourne-Again SHell )

Brian Fox and Chet Ramey

Free Software Foundation

Shell mais utilizado nas versões linux, é o shell padrão do Unix. Prompt $

CSH (C SHell) Bill Joy University of California (For BSD)

Sintaxe similar a linguagem C. Traz vantagens adicionais ao Bourne shell como reutilizar e visualizar comandos previamente digitados. Prompt %

KSH (Korn SHell) David Korn AT & T Bell Labs --

TCSH - -- TCSH é compativel com UNIX C shell (CSH

Para verificar shell disponível em sua máquina : $ cat /etc/shells

Para verificar o shell ativo $ echo $SHELL

Page 4: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

4

Script shell

Quando Utilizar ?

– procedimentos complexos usando muitas linhas de comando– procedimento do qual todos os usuários poderão beneficiar-se– uma tarefa numa data planejada– integrar informações de vários sistemas existentes

Page 5: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

5

Script shell - Shell como linguagem

escrevendo programas em Shell1) digitando os comandos e executando-os interativamente– o prompt normal $ troca para > quando se inicia a digitarcomandos na Shell– a seguir o programa é executado

2) armazenando os comandos em um arquivo e invocando da mesma forma que um programa– usando um editor de textos comum

Page 6: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

6

Script shell

Exemplo de programa interativo– determinar todos os arquivos que contém o string POSIX

$ for arquivo in *> do> if grep -l POSIX $arquivo> then> more $arquivo> fi> done

arquivo é uma variável e$arquivo seu conteúdo

grep e more são comandosgrep: pesquisa em um ou mais arquivos por linhas que

casam com uma expressão regular dada ( -l: listar)more: mostra o conteúdo do arquivo, uma tela de cada vez

Page 7: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

7

Script shell

Exemplo de shell script-> arquivo chamado primeiro.sh-> .sh sem significado-> # indica comentário-> /bin/sh =shell default-> exit 0 código de retorno, 0 indica sucesso

#!/bin/sh# primeiro.sh# compilar apenas os arqs.# contendo string POSIXfor file in *doif grep -l POSIX $filethenmore $filefidoneexit 0

#!/bin/sh# primeiro0.sh

clearecho “Os arquivos do diretório são:”ls –l|more

Page 8: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

8

Script shell

COMO ESCREVER SEU SCRIPT

1. Escolha um editor de textos e inicie sua execução 2. Digitar script3. Salvar4. Acertar permissões de execução para o dono:

chmod u+x nome_scriptPara executar se o PATH for conhecido apenas digite o nome

do script, se não é possível fazê-lo de diferentes maneiras bash nome_scriptsh nome_script./nome_script

Page 9: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

9

Script shell

Escreva o seguinte script, salve e execute.Nome do script: espteste

# Script para imprimir informações sobre o usuário logadoclearecho “Ola $USER"echo “Hoje é \c ";dateecho “O numero de usuarios ativos e: \c" ; who | wc -lecho "Calendario"cal 2005exit 0

Page 10: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

10

Script shell - Caracteres especiaisAspas duplas “ “ - string– mostra o string e substitui variáveis (se existir)Aspas simples ´ - string– mostra o string e não substitui variáveis (se existir)Crase ` - comando– o resultado do comando é usado em outputBarra Invertida \Transforma caracter especial em caracter normal# – permite a inserção de comentários no script

# testando variaveisset dia = 19echo “ Hoje é dia $dia”resultado = Hoje é dia $diaset maquina = `hostname`echo $resultado $maquina

Page 11: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

11

Script shell - Variáveis

Variáveis de ambiente - são variáveis pré-definidas– Todas as variáveis de ambiente são definidas noinício da Sessão do Usuário● Variáveis de ambiente comuns a todos os usuáriossão encontrados no arquivo /etc/profile● Variáveis de ambiente de usuário são encontradosno arquivo ~HOME/.profile● Primeiro é lido o arquivo /etc/profile e depois oarquivo ~HOME/.profile

Digite set para verificar as variáveis de ambiente

exemplos: HOME, PATH, $#, $$

Page 12: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

12

Script shell - Manipulando Variáveis

Variáveis locais –atuam somente durante a execução do ShellAtribuição de valor :

Para verificar as variáveis locais digite set

nome=“joao”idade=16meudir=`ls –l`set

Page 13: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

13

Script shell - Manipulando Variáveis

Um detalhe importante: NÃO PODE EXISTIR ESPAÇOS ENTRE OS ELEMENTOS DA DECLARAÇÃO/ATRIBUIÇÃO

● Quando a string atribuída a variável possuir espaços, é necessário a utilização de aspas duplas no início e no final da string.● As variáveis são case-sensitive, isto é, existe diferenças entre maiúsculas e minúsculas.

nome=“joao”idade=16meudir=`ls –l`

A=5a=5

Page 14: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

14

Script shell - Manipulando Variáveis

Variáveis globais – permanecem ativas durante toda a sessão de login

Atribuição de valor :

• export nome (torna a variável global)• Para verificar as variáveis globais digite o comando env|more• Para apagar uma variável digite unset

unset nome

TERM=VT100export TERM nome=“joao”export nome

Page 15: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

15

Script shell - Manipulando Variáveis

Realizando Cálculos

Através do prompt do Shell podemos realizar

• onde $(( )) é a função de cálculo $A porque estamos solicitando o conteúdo da variável A e B

A=5B=3SOMA=$(($A+$B))

Page 16: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

16

Script shell - Manipulando Variáveis

● Definir uma variável J com o valor 5 e mostrar na tela● Definir uma variavel SALA cujo conteúdo deve ser “Laboratorio D” e a seguir mostrar na tela● Apagar as variáveis J e SALA criadas anteriormente

Page 17: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

17

Script shell - Manipulando Variáveis

read -> captura de variável no teclado, termina ao pressionarmos o returnecho -> impressão no vídeo

read nomeread idadeecho “ bom dia $nome voce tem apenas $idade anos?”

Faça um script e grave-o no arquivo esp01. O Script deve solicitar as seguintes informações:

Digite Primeiro Nro:

Digite Segundo Nro:

Após a entrada de dados imprima no vídeo a seguinte frase:

O Usuario XXX digitou os numeros XX e XX

A soma dos números foi XXX

Page 18: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

18

Script shell - Echo - Opções

● -n Do not output the trailing new line.● -e Enable interpretation of the following backslash escaped characters in the strings:● \a alert (bell)● \b backspace● \c suppress trailing new line● \n new line● \r carriage return● \t horizontal tab

echo -e "Amanhã vou pescar \a\t\t com meu amigo\n"

Page 19: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

19

Script shell – Parâmetros posicionais

Variáveis adicionais são criadas quando a shell é invocada com parâmetros

• $# -> quantidade de parâmetros passados• $1, $2, ... parâmetros dados ao script• $* -> lista de todos os parâmetros• $0 -> nome do programa• $* -> todos os argumentos• $$ -> número do PID

Page 20: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

20

Script shell

Nome:posici

inicio=“Ola"echo $inicioecho “O programa $0 iesta rodando agora"echo “O segundo parametro foi $2"echo " O primeiro parametro foi $1"echo “A lista de parametros é $*"echo “O diretorio home da conta $USER e $HOME"echo “Por favor entre com uma nova saudação inicial"read inicioecho $inicioecho “Final do script"exit 0

Para executar:

./posici joana paulo ana

Page 21: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

21

Script shell - Teste de Condição

• Comando de teste com duas sintaxes:

[ ] ou testAs condições de teste podem ser feitas em 3

categorias:• Comparação de strings, aritmética e de arquivos

Page 22: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

22

Script shell - Teste de Condição

if condição

then

comandos

elsecomandos

fi

echo “Por favor estamos no periodo mautino?”read horaif [ $hora = “sim" ]; thenecho “Bom dia"elseecho “Boa noite"fiexit 0

Page 23: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

23

Script shell - Teste de Condição

Comparação de strings

Verdadeiro se:

• string1 = string2 São iguais

• string1 != string2 Não são iguais

• -n string String não é nulo

• -z string String é null (vazio)

Page 24: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

24

Script shell - Comparação alfanuméricos

#!/bin/bash

varx="Bom dia"

read dia

if [ $dia = $varx = dia ]; then

echo "A comparação de String é verdadeira"

else

echo "A Comparação de Striong é falsa"

fi

Page 25: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

25

Script shell - Teste de Condição

Comparação AritméticaVerdadeiro se:• expr1 -eq expr2 São iguais• expr1 -ne expr2 Não são iguais• expr1 -gt expr2 expr1 > expr2• expr1 -ge expr2 expr1 >= expr2• expr1 -lt expr2 expr1 < expr2• expr1 -le expr2 expr1 <= expr2• ! expr Not expr

Page 26: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

26

Script shell - NUMÉRICOS

#!/bin/bashecho -n "digite o valor do número: "read var1if [ $var1 -eq 1 ]then

echo "Vc escolheu o Valor um"elif [ $var1 -eq 2 ]; then

echo "Vc escolheu o valor dois"elif [ $var1 -eq 3 ]; then

echo "Vc escolheu o valor três"else

echo "Vc escolheu uma opção inválida"fi

Page 27: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

27

Script shell - Teste de Condição

Comparação entre ArquivosVerdadeiro se:• -d fileÉ diretório • -s file Tamanho não é zero• -e file Existe • -f file É arquivo regular• -w file Pode ser escrito• -x file É executável• -r file É legível

Page 28: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

28

Script shell - ARQUIVOS

#!/bin/bashecho -n "digite o nome do arquivo: "read var1if [ -f "$var1" ]then

echo "$var1 é um arquivo normal"if [ ! -s "$var1" ]; then

echo "Este arquivo está vazio"else

echo "Este arquivo não está vazio"fiif [ -r "$var1" ]; then

echo "O arquivo tem permissão de leitura"else

echo "O arquivo não tem permissão de leitura"fi

elseif [ -d "$var1" ]; then

echo "$var1 é um diretório"fi

fi

Page 29: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

29

Script shell - Teste de Condição

Retome o script esp01, verifique o valor do primeiro número, se este for maior do que o segundo multiplique-os e apresente o resultado. Se for inferior ao segundo número subtraia o primeiro do segundo e apresente o resultado.

Page 30: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

30

Script shell - Laços

for variavel in valores

do

comandos

donefor i in 1 2 3 4 5do

echo “ passou $i”doneexit 0

for i in $(ls –l)do

echo “ ** arquivo $i **”more $iread oi

doneexit 0

Page 31: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

31

Script shell – Controle IncondicionalO comando "break" para incondicionalmente a execução de qualquer ramo, e prossegue a Execução na instrução seguinte ao "done", "fi" ou "esac". Se não existirem instruções após este o programa termina.

O comando "continue" faz com que o programa reinicie imediatamente um novo ciclo, ignorando o que resta dos comandos entre o "do" e o "done".

c=0

for file in *

do

If grep -l POSIX $file

then

more $file

continue

fi

c=$(($c+1)

if [ $c –eq 5 ]

then

break

fi

Echo “** passou por aqui **”

done

exit 0

Page 32: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

32

Script shell - Laços

• Utilizando-se do laço for, escreva um script (esp02) onde:

• O usuário irá informar o nome do diretório do qual deseja mover os arquivos e e o nome do diretório destino.

• Mover apenas arquivos simples, não mover diretórios.• A cada movimento de arquivo mostre o nome do arquivo

copiado.• Ao finalizar informe o total de arquivos movidos

Script Movimentação Automática

Digite nome do diretório a ser copiado:

Digite nome do diretório destino:

Page 33: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

33

Script shell - Laços

while condição

do

comandos

done foo=1while [ "$foo" -le 20 ]doecho “passou pelo laço $foo"foo=$(($foo+1))doneexit 0

Page 34: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

34

Script shell - Laços

until condição

do

comandos

done

#!/bin/shuntil who | grep "$1" > /dev/nulldosleep 60done# Agora toca o sinal e anuncia a entrada do #usuarioecho -e \\aecho "*** $1acaba de se logar no sistema ***"exit 0

O script fica em loop até que o usuário informado em $1 se logue no sistema

Page 35: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

35

Script shell -case variavel in

pattern [ | pattern] ...) comandos;;

pattern [ | pattern] ...) comandos;;

esac#!/bin/shecho “Digite o codigo do curso, 1- direito, 2- letras, 3-medicina”read cursocase $curso in1) echo “seu credito custa R$ 30,00";;2 ) echo “seu credito custa R$ 20,00";;3 ) “seu credito custa R$ 50,00";;* ) echo “Resposta incorreta";;esacexit 0

Page 36: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

36

Script shell - case

Escreva um script utilizando-se do case onde seja possível ao usuário utilizar o menu abaixo:

** menu de opções **01 – criar diretorio02 – copiar arquivo03 – mostra usuários ativos04 – lista diretório05 - remove diretório00 - fim

opção:** **

-Na opção 1 solicite o nome do diretorio-Na opção 2 solicite nome do arquivo de origem e destino-Na opção 4 e 5 solicite o nome do diretorio-Mantenha o menu em loop até a digitação 00 para finalizar

Page 37: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

37

Script shell - Funçõesnome _da_função () {

Comandos

}#!/bin/shfoo() {echo “a função foo esta executando"}echo “inicio do script"fooecho "script finalizado"

Page 38: 1 Gestão de Redes Corporativas: Tecnologias e Segurança Administração de Sistemas Operacionais Programação Shell Vera Schuhmacher – shummy@unisul.br vera.schuhmacher@gmail.com

38

Links Interessantes

• http://aurelio.net/shell/canivete.html• http://www.moredata.pt/whitepapers/manual-prog-shell/

shell.htm• http://www.maxmaxine.pop.com.br/apostilas.htm• http://cdfinfo.in2p3.fr/Services/Informatique/DOCU/

munix.html#Creating%20KORN%20shell%20scripts