Programação para Redes de Computadores 31/03/2014. Aula 7: Bash Script

Documentos relacionados
Aula 5 e 6: Introdução ao shell

Aula 9: Shell Script

Estácio-FIC Graduação em Redes de Computadores

Um programa awk contém uma seqüência de padrões (expressões regulares) e ações da seguinte forma:

Shell Script. Rafael Silva Guimarães

Introdução a Sistemas Abertos. Shell Script

Programação Shell Script: como dominar seu terminal

ADMINISTRAÇÃO DE REDES I LINUX. Shell Script. Frederico Madeira LPIC 1, CCNA

Programação para Servidores. Cassio Diego

Estácio-FIC Graduação em Redes de Computadores

Conceitos Básicos de Scripts

Sistema Operacional Unidade 11.2 Shell Script: estruturas condicionais. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Redes de Computadores

Shell script. Prof. Lara P. Z. B. Oberderfer

Administração de Redes de Computadores

Shell scripts - Bash

105 Shell Script. João Bosco Teixeira Junior

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCENS UFES Departamento de Computação. Shell Script

Analista de Sistemas

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

Tópicos Especiais em Linguagens de Programação Shell Script Estruturas de Fluxo Condicionais

Administração de sistemas Linux. Estrutura de diretórios Linux O diretório /etc

SHELL SCRIPT - CONTINUAÇÃO. Adão de Melo Neto

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas de Repetição Comando while do... done

Introdução ao Fortran 90-4

4. Constantes. Constantes pré-definidas

Tópicos Especiais em Linguagens de Programação Shell Script Estruturas de Repe;ção

Programação de Scripts Considerações Gerais. Adaptado do material do Prof. Mário Fiocco Júnior

Comandos em C (cont.)

Apostila - Desenvolvimento web com PHP

A sintaxe básica para definir uma função é: function nome_da_função([arg1, arg2, arg3]) { Comandos;... ; [return <valor de retorno>]; }

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Comandos. Sistema Operacional GNU/Linux. Para Manipulação de Contas

Algoritmos e Programação

Programação I A Linguagem C. Prof. Carlos Alberto

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

Manual do Aplicativo de Configuração

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Introdução ao Fortran 90-3

Interpretador de comandos Formas de envio de Comandos Terminal Linux Curingas Listando Placas Particularidades. Aula 02

Estruturas de Repetição

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Manual de Autocorreção Módulo 06 Tarefa 02

Shell Script. Básico do básico

Lista de Exercícios - 1 Prof: Yuri Frota

Introdução a Sistemas Abertos. Ambiente shell

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA DE CIÊNCIAS E TECNOLOGIA. ECT1203 Linguagem de Programação Turma Prof.

Estruturas de Repetição

Programação Básica. Estrutura de um algoritmo

Fundamentos de Lógica e Algoritmos. Aula 3.2 IDLE, Variáveis e Tipos. Prof. Dr. Bruno Moreno

3.1 - Funções para manipular dados de entrada e saída padrão

Material Didático Proposto

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais

CEFET SC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO EM TELECOMUNICAÇÕES REDES DE COMPUTADORES/TELEFONIA DISCIPLINA DE SISTEMAS OPERACIONAIS

Conhecendo a Linguagem de Programação C

Introdução à Programação. Uma Abordagem Funcional

Aula : Permissões de acesso a arquivos e diretórios. 2 Conceito de permissões de acesso a arquivos e diretórios

Introdução a shell scripts

AULA 8. Bruno L. Albrecht Felipe A. Chies Lucas F. Zawacki. PET Computação UFRGS

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)

PROCESSO DE SELEÇÃO DE ESTAGIÁRIO EDITAL 100/2017

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Linguagem de Programação II. Introdução à programação em VB Professor: Armando Hage

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

Curso de extensão em Administração de redes com GNU/Linux

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Administração de Sistemas Operacionais Prof.: Marlon Marcon

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Laboratório!de!Linguagens!de!Programação! Prof.!Andrei!Rimsa!Álvares! Trabalho(Prático(I(

Trabalhando com redes no Linux - Debian

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Exercitando a Programação com PHP

Script. Baltazar Tavares (Psycho Mantys)

Introdução à Linguagem C

Revisão C++ - Parte 1

Introdução à Computação - aulas 01 e 02 -

Introdução a programação Visão geral

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Laboratório de Programação II

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA COM DECISÃO MÚLTIPLA. Prof. Dr. Daniel Caetano

Manual do InCD Reader

Estrutura do programa

Prof. Jorge Cavalcanti

Exercícios: Arquivos

Linguagem C. Programação Estruturada. Estruturas de Controle. Prof. Luis Nícolas de Amorim Trigo

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Aula 4 Introdução ao C

CONCEITOS DE ALGORITMOS

5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.

ADMINISTRAÇÃO DE SISTEMAS UNIX Aula Prática 01 Sistemas Operacionais Gil Eduardo de Andrade

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

Desenvolvimento de softwares e aplicações web

Transcrição:

Programação para Redes de Computadores 31/03/014 Aula 7: Bash Script Professor: Jorge H. B. Casagrande Notas de aula adaptada da original do prof. Emerson R. de Mello casagrande@ifsc.edu.br 1 Argumentos de linha de comando Ao invocar um shell script é possível fornecer valores para este através da linha de comando. Por exemplo, o comando mkdir recebe como argumento de linha de comando o nome do diretório que desejamos criar (mkdir novo-dir). É possível passar mais de um argumento de linha de comando para um shell script, abaixo é apresentado a listagem com o nome das variáveis em um shell script necessárias para operar com argumentos de linha de comando. A figura 1 ilustra o uso das variáveis apresentadas na tabela 1. Variável Descrição $0 Para obter o nome do arquivo (do shell script) que está sendo executado $1 Para obter o valor fornecido pelo primeiro argumento de linha de comando $ Para obter o valor fornecido pelo segundo argumento de linha de comando. E assim sucessivamente $# Para obter o número total de argumentos fornecidos via linha de comando $* Para obter a lista com todos os argumentos fornecidos Tabela 1: Variável usadas com argumentos de linha de comando 3 if [ $# -eq 0 ]; 4 then 5 echo "Voce nao forneceu argumentos de linha de comando" 6 else 7 echo "Voce forneceu $# argumentos de linha de comando" 8 echo "O valor do primeiro argumento e : $1" 9 echo "Segue a listagem com todos os argumentos" i=1 11 for arg in $*; do 1 echo "$i o. argumento: $arg" 13 i=$((i+1)) 14 done 15 fi Figura 1: Usando argumentos de linha de comando 1 IFSC Campus São José

Operadores para teste com arquivos Retorna true (verdade) se: -e arquivo existe -f é um arquivo regular (não é diretório nem dispositivo) -s o arquivo não possui tamanho zero -d é um diretório -b é um dispositivo de bloco (cdrom, disquete, etc.) -c é um dispositivo de caracter (teclado, modem, placa de som, etc.) -h é um link simbólico -r o arquivo possui permissão de leitura (para o usuário que está executando o teste) -w o arquivo possui permissão de escrita -x o arquivo possui permissão de (para o usuário que está exe- cutando o teste) execução (para o usuário que está executando o teste) -nt (f1 -nt f) f1 é mais novo que f -ot (f1 -ot f) f1 é mais velho que f -ef (f1 -ef f) f1 e f são hard links para o mesmo arquivo A figura ilustra um exemplo para listar somente os diretórios presentes no diretório corrente. 3 4 # percorrendo a listagem de arquivos do diretorio corrente 5 for arq in *; do 6 if [ -d $arq ] 7 then 8 echo "$arq e um diretorio" 9 fi done Figura : Exibindo a lista de diretórios A figura 3 ilustra um exemplo para listar o conteúdo de um arquivo. São feitos testes para garantir que o arquivo seja informado via argumentos de linha de comando e que de fato seja um arquivo regular e não um diretório, por exemplo. 3 Trabalhando com cores no shell No shell é possível alterar a cor do texto, a cor do fundo além de outros modificadores como o negrito, sublinhado e até mesmo para tornar o texto intermitente. A tabela ilustra o código das cores e dos modificadores. A modificação das propriedades do shell é feita através de três campos separados por ponto e vírgula. O primeiro campo é para modificar a cor do texto; o segundo campo é para modificar a cor do fundo; e o terceiro campo é para modificar as propriedades como negrito, sublinhado, etc. É possível omitir os campos os quais não se deseja modificar. Por exemplo, é possível somente informar somente um valor no terceiro campo e omitir valores para os dois primeiros campos. A figura 4 indica como redefinir a cor no shell, ilustrando os casos de omissão dos campos. IFSC Campus São José

3 #O arquivo a ser lido e passado com argumento de linha de comando 4 if [ $# -ne 1 ]; 5 then 6 echo "Sintaxe errada!" 7 echo "Exemplo: $0 nome-do-arquivo" 8 exit 1 9 fi 11 # verifica se e realmente um arquivo 1 if [ -f $1 ]; 13 then 14 # lista o conteudo do arquivo 15 while read linha; do 16 echo $linha 17 done < $1 18 else 19 echo "Argumento informado nao e um arquivo regular" 0 exit 1 1 fi Figura 3: Exibindo o conteúdo de arquivo Código Cor Código Modificador 0 preto 0 reinício das configurações 1 vermelho 1 negrito verde 4 sublinhado 3 amarelo 5 piscando 4 azul 7 reverso 5 rosa 6 ciano 7 branco Tabela : Código das cores e modificadores 3 # \e[3xm - indica a cor do texto, pondendo X ser de 0 ate 7. 4 echo -e "\e[3m Mudando somente a cor do texto para verde \e[m" 5 6 # \e[4xm - indica a cor do fundo, pondendo X ser de 0 ate 7. 7 echo -e "\e[4m Mudando somente a cor do fundo para verde \e[m" 8 9 echo -e "\e[3;40m Mudando a cor do texto para verde e o fundo para preto \e[m" 11 # \e[33;44;xm - x e o modificador, podendo ser 0, 1, 4, 5 ou 7 1 echo -e "\e[33;44;1m Deixando o texto amarelo em negrito sobre o fundo azul \e[m" 13 14 # o \e[m no final da linha serve para retornar as propriedades padroes do terminal 15 echo -e "\e[1m Deixando o texto somente em negrito \e[m" Figura 4: Usando cores 3 IFSC Campus São José

4 Variável IFS Internal Field Separator A variável IFS é usada pelo shell para delimitar palavras em uma lista, a qual é usada por diversos comandos, por exemplo, read, for, select, etc. O valor padrão da variável IFS consiste nos caracteres de espaço em branco, tabulação e de nova linha, mas é possível redefiní-la para uma melhor adequação aos nossos scripts. A figura 5 ilustra um exemplo sem redefinir a variável IFS e um segundo exemplo redefinindo-a. Na figura 6 é apresentado um exemplo para listar todo o conteúdo do arquivo /etc/passwd e apresentar a saída formatada. 3 # criando uma lista de palavras 4 lista="aula PRC; Tecnico em Redes" 5 6 # percorrendo a lista de palavras com um for 7 for i in $lista; do 8 echo "palavra: $i" 9 done 11 # O resultado sera 1 # palavra: Aula 13 # palavra: PRC; 14 # palavra: Tecnico 15 # palavra: em 16 # palavra: Redes 17 18 # Redefinindo a variavel IFS, colocando o caracter ; como delimitador 19 IFS=";" 0 1 # percorrendo a lista de palavras com um for for i in $lista; do 3 echo "palavra: $i" 4 done 5 6 # O resultado sera 7 # palavra: Aula PRC 8 # palavra: Tecnico em Redes 9 30 # limpando a variavel IFS (boa pratica) apos seu uso 31 unset IFS Figura 5: Redefinindo variável IFS # Listando o conteudo do arquivo /etc/passwd e formatando a saida 3 IFS=":" 4 5 while read usuario senha uid gid nome home shell; do 6 echo -e "Usuario: $usuario \nsenha:\t $senha \nnome:\t $nome" 7 echo -e "UID:\t $uid \ngid:\t $gid" 8 echo -e "Home:\t $home \nshell:\t $shell \n" 9 echo -e "------------------" done < /etc/passwd 11 # o conteudo arquivo /etc/passwd esta sendo enviado para o while 1 # o arquivo sera lido linha a linha ate chegar-se ao seu fim 13 14 unset IFS Figura 6: Saída formatada do arquivo /etc/passwd 4 IFSC Campus São José

5 Criando menus através do comando select O bash possui um comando chamado select que permite a criação de menus de opções. A figura 7 ilustra um exemplo usando o comando select. 3 # definindo a mensagem que sera exibida 4 PS3="Entre com uma opcao: " 5 6 # definindo as opcoes disponiveis no menu 7 menu="soma Subtracao Divisao Multiplicacao Sair" 8 9 select opcao in $menu; do 11 echo "Voce escolheu: $opcao" 1 # A variavel especial REPLY contem o valor escolhido 13 14 case $REPLY in 15 1) 16 echo "Soma " 17 ;; 18 ) 19 echo "Subtracao" 0 ;; 1 3) echo "Divisao" 3 ;; 4 4) 5 echo "Multiplicacao" 6 ;; 7 5) 8 echo "Saindo" 9 break 30 ;; 31 *) 3 echo "Entrou com uma opcao diferente de 1,, 3, 4 ou 5" 33 ;; 34 esac 35 done Figura 7: Comando select 6 Exercícios Desenvolva um shell script que: 1. Faça a listagem das cores disponíveis no shell. O script deverá exibir uma frase variando somente a cor do texto e depois exibir a frase variando somente a cor de fundo.. Apresente um menu com as seguintes opções: Soma, Subtração, Divisão, Multiplicação e Sair. O usuário deverá selecionar uma dessas opções, informar dois operandos e o script deverá apresentar o resultado. O script ficará em execução até que o usuário escolha a opção Sair. 3. Leia dois operandos e um operador, através de argumentos de linha de comando, e realize a operação aritmética correspondente. Exemplo:./exercicio3.sh +, resultado: 1. 4. Leia duas datas no formato AAAA-MM-DD, através de argumentos de linha de comando, e informe a diferença em dias entre essas datas. Exemplo:./exercicio4.sh 009-09-1 001--0. 5 IFSC Campus São José

5. Leia o nome de uma interface de rede (argumentos de linha de comando) e informe o IP, a máscara de rede e o endereço de broadcast associados a esta. Dica: Faça uso do comando ip combinado as ferramentas grep, tail e cut. Exemplo: ip a grep eth0 tail -1 6. Que converta para minúsculo os nomes de todos os arquivos regulares (não pode ser diretório, link simbólico) de um diretório fornecido como argumento de linha de comando. Exemplo:./exercicio6.sh documentos. Dica: Faça uso do comando tr. Exemplo: 1 echo "TesTando a FerraMENTA" tr [:upper:] [:lower:] 7. O aplicativo convert (pertencente ao pacote imagemagick) é famoso por fazer a conversão de formatos de imagens, por exemplo JPG para PNG, bem como o redimensionamento, rotacionamento entre outras tarefas sobre uma imagem. Alguns exemplos de uso são apresentados abaixo: 1 # convertendo de JPG para PNG. Basta indicar a extensao desejada para fazer a conversao convert arquivo.jpg arquivo.png 3 4 # redimensionando uma imagem JPG 5 convert arquivo.jpg -resize 800x600 -quality 89 arquivo.jpg 6 7 # rotacionando em 90 graus uma imagem 8 convert arquivo.jpg -rotate 90 arquivo.jpg (a) Desenvolva um shell script que receba argumentos, formato de origem e formato de destino e converta todos os arquivos do diretório atual do formato de origem para o formato de destino; (b) Desenvolva um shell script que redimensione todos arquivos do diretório atual. Para isto deve-se fornecer argumentos, formato do arquivo e tamanho desejado; (c) Desenvolva um shell script que converta todas imagens que estejam no formato retrato para o formato paisagem. Sabemos que uma imagem está no formato retrato quando sua largura é inferior a sua altura. Uma forma para obter as dimensões de uma imagem é mostrada abaixo: 1 # usando o comando cut identify imagem.jpg cut -d " " -f 3 3 4 # usando a linguagem awk 5 identify imagem.jpg awk {print $3} 8. A ferramenta netcat é conhecida como um caniveto suíco TCP/IP pois pode ser usada das mais diversas formas para ler e escrever dados através de conexões de rede TCP e UDP. Por exemplo, é possível usar o netcat para verificar se um determinado serviço está rodando em um servidor. No quadro abaixo é feito uso do netcat para verificar se o servidor HTTP (porta 80) da máquina www.sj.ifsc.edu.br está rodando, ou seja, aceitando conexões. É feito também um teste sobre a porta 81 para a mesma máquina. 1 # Verificando porta 80 netcat -zv -w www.sj.ifsc.edu.br 80 3 sj [00.135.37.65] 80 (www) open 4 6 IFSC Campus São José

5 # Verificando porta 81 6 netcat -zv -w www.sj.ifsc.edu.br 81 7 sj [00.135.37.65] 81 (?) : Connection refused O resultado do netcat 1 para a porta 80 foi open e o resultado para a porta 81 foi Connection refused. (a) Desenvolva um shell script para fazer uma varredura de portas (de uma porta inicial até uma porta final, especificadas pelo usuário) em uma dada máquina e que indique quais portas (ex: 80) e serviços (ex: www) estão rodando nesta máquina. Exemplo:./varredor.sh 19.168.0.1 4. Sendo a porta inicial e 4 a porta final. 1 Dúvidas sobre os parâmetros do netcat? Veja man netcat. 7 IFSC Campus São José