1 / 38

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

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. Script shell.

newman
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ário poderá realizar qualquer função disponível.

  3. Script shell Para verificar shell disponível em sua máquina : $ cat /etc/shells Para verificar o shell ativo $ echo $SHELL

  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

  5. Script shell - Shell como linguagem escrevendo programas em Shell 1) digitando os comandos e executando-os interativamente – o prompt normal $ troca para > quando se inicia a digitar comandos 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

  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 comandos grep: 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

  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 # primeiro0.sh clear echo “Os arquivos do diretório são:” ls –l|more #!/bin/sh # primeiro.sh # compilar apenas os arqs. # contendo string POSIX for file in * do if grep -l POSIX $file then more $file fi done exit 0

  8. Script shell COMO ESCREVER SEU SCRIPT Escolha um editor de textos e inicie sua execução Digitar script Salvar Acertar permissões de execução para o dono: chmod u+x nome_script Para executar se o PATH for conhecido apenas digite o nome do script, se não é possível fazê-lo de diferentes maneiras bash nome_script sh nome_script ./nome_script

  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

  10. Script shell - Caracteres especiais Aspas 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 output Barra Invertida \ Transforma caracter especial em caracter normal # – permite a inserção de comentários no script # testando variaveis set dia = 19 echo “ Hoje é dia $dia” resultado = Hoje é dia $dia set maquina = `hostname` echo $resultado $maquina

  11. Script shell - Variáveis Variáveis de ambiente - são variáveis pré-definidas – Todas as variáveis de ambiente são definidas no início da Sessão do Usuário ● Variáveis de ambiente comuns a todos os usuários são encontrados no arquivo /etc/profile ● Variáveis de ambiente de usuário são encontrados no arquivo ~HOME/.profile ● Primeiro é lido o arquivo /etc/profile e depois o arquivo ~HOME/.profile Digite set para verificar as variáveis de ambiente exemplos: HOME, PATH, $#, $$

  12. Script shell - Manipulando Variáveis Variáveis locais –atuam somente durante a execução do Shell Atribuição de valor : Para verificar as variáveis locais digite set nome=“joao” idade=16 meudir=`ls –l` set

  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=16 meudir=`ls –l` A=5 a=5

  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=VT100 export TERM nome=“joao” export nome

  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=5 B=3 SOMA=$(($A+$B))

  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

  17. Script shell - Manipulando Variáveis read -> captura de variável no teclado, termina ao pressionarmos o return echo -> impressão no vídeo read nome read idade echo “ 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

  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"

  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

  20. Script shell Nome:posici inicio=“Ola" echo $inicio echo “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 inicio echo $inicio echo “Final do script" exit 0 Para executar: ./posici joana paulo ana

  21. Script shell - Teste de Condição • Comando de teste com duas sintaxes: [ ] ou test As condições de teste podem ser feitas em 3 categorias: • Comparação de strings, aritmética e de arquivos

  22. Script shell - Teste de Condição if condição then comandos else comandos fi echo “Por favor estamos no periodo mautino?” read hora if [ $hora = “sim" ]; then echo “Bom dia" else echo “Boa noite" fi exit 0

  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)

  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

  25. Script shell - Teste de Condição Comparação Aritmética Verdadeiro 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

  26. Script shell - NUMÉRICOS #!/bin/bash echo -n "digite o valor do número: " read var1 if [ $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

  27. Script shell - Teste de Condição Comparação entre Arquivos Verdadeiro 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

  28. Script shell - ARQUIVOS #!/bin/bash echo -n "digite o nome do arquivo: " read var1 if [ -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" fi if [ -r "$var1" ]; then echo "O arquivo tem permissão de leitura" else echo "O arquivo não tem permissão de leitura" fi else if [ -d "$var1" ]; then echo "$var1 é um diretório" fi fi

  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.

  30. Script shell - Laços for variavel in valores do comandos done for i in 1 2 3 4 5 do echo “ passou $i” done exit 0 for i in $(ls –l) do echo “ ** arquivo $i **” more $i read oi done exit 0

  31. Script shell – Controle Incondicional

  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:

  33. Script shell - Laços while condição do comandos done foo=1 while [ "$foo" -le 20 ] do echo “passou pelo laço $foo" foo=$(($foo+1)) done exit 0

  34. Script shell - Laços until condição do comandos done #!/bin/sh until who | grep "$1" > /dev/null do sleep 60 done # Agora toca o sinal e anuncia a entrada do #usuario echo -e \\a echo "*** $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

  35. Script shell - case variavel in pattern [ | pattern] ...) comandos;; pattern [ | pattern] ...) comandos;; esac #!/bin/sh echo “Digite o codigo do curso, 1- direito, 2- letras, 3-medicina” read curso case $curso in 1) 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";; esac exit 0

  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 diretorio 02 – copiar arquivo 03 – mostra usuários ativos 04 – lista diretório 05 - remove diretório 00 - 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

  37. Script shell - Funções nome _da_função () { Comandos } #!/bin/sh foo() { echo “a função foo esta executando" } echo “inicio do script" foo echo "script finalizado"

  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

More Related