COORDENAO DO CURSO SUPERIOR DE REDES DE COMPUTADORES
DISCIPLINA: PROGRAMAO EM SHELL Professor: Felipe Soares PERODO: 3 (PRIMEIRO) ESTGIO: 2 (PRIMEIRO)
1. Sobre a estrutura de dados Arrays responda: a) Dado um vetor chamado PORT que contm os seguintes PORTAS do Sistema Operacional: 80, 22, 23, 443 e 53, faa as seguintes operaes:
Imprima o primeiro elemento do vetor. Usando o filtro com expresses aritmticas recupere o ndice do elemento 22. Liste todos os elementos do vetor. Imprima a quantidade de elementos do vetor. Copie o vetor inteiro para outro com o nome PORTAS #!/bin/bash PORT=(80 22 23 443 53) clear #Imprima o primeiro elemento do vetor echo "A Primeira porta ${PORT[0]}" #Usando o Filtro com expresses aritimticas recupere o ndice do elemento 22! echo ${PORT[10/2-4]} #Imprima a quantidade de vetor qporta=${#PORT[*]} echo "Existem $qporta ativas no array" #Listagem de todos os elementos do vetor! i=0 while [ $i -lt $qporta ]; do echo "$i : ${PORT[$i]}" let i++ done
b) Implemente um script para bloquear as portas do vetor PORTAS usando IPTABLES, voc deve usar uma estrutura de repetio como o for para ler os elementos do vetor e em cada interao preencher a varivel porta dentro do comando IPTABLES. Abaixo segue as duas regras do IPTABLES.
iptables -A INPUT -p udp --dport $porta -j DROP iptables -A INPUT -p tcp --dport $porta -j DROP #!/bin/bash PORTIPT=(80 22 23 443 53) qportaipt=${#PORTIPT[*]} ipt=0 while [ $ipt -lt $qportaipt ]; do iptables -A INPUT -p udp --dport ${PORTIPT[$ipt]} -j DROP iptables -A INPUT -p tcp --dport ${PORTIPT[$ipt]} -j DROP let ipt++ done
c) Utilize a funo a do comando read e insira dentro de um vetor chamado PROTOCOLOS os elementos: http, ftp, smtp, pop3, smb e dhcp. Verifique se o script inseriu os elementos, imprimindo os valores do vetor PROTOCOLOS utilizando a estrutura de repetio for. #!/bin/bash read -a PROTOCOLOS <<< "http ftp smtp pop3 smb dhcp" for ipcl in 0 1 2 3 4 5 do echo "Posicao $ipcl :>> ${PROTOCOLOS[$ipcl]}" done
d) Implemente um array para guardar 7 endereos IPs, e imprimir o seu contedo usando a estrutura de repetio while. #!/bin/bash rcip=0 while [ $rcip -lt 6 ]; do echo "Entre como ip de posio $rcip;" read ip$rcip let rcip++ done read -a VTRIP <<< "$ip0 $ip1 $ip2 $ip3 $ip4 $ip5 $ip6" qip=${#VTRIP[*]} rcip=0 while [ $rcip -lt $qip ]; do echo "Posicao $rcip :>> ${VTRIP[$rcip]}" let rcip++ done
2. Como executar uma funo do script1 dentro do script2? Para responder, implemente um cenrio onde o script1 vai guardar uma funo chamada permissao() que recebe parmetros para mudar a permisso de um arquivo . O script2 deve carregar a funo permissao(), ao executar o script2 o usurio deve passar os parmetros necessrios. #Aplicativo para mudar as permisses dos arquivos! #Necessrio Criar dois Arquivos SCRIPT1 e SCRIPT2! #Arquivo SCRIPT1 #!/bin/bash function PERMISSAO() { echo "Alterando a Permissao do Arquivo $1 para $2 ." chmod $2 $1 }
#Arquivo SCRIPT2 #!/bin/bash #carrega o SCRIPT1 na memria source SCRIPT1 echo -n "Digite o nome do arquivo que deseja alterar a permissao: " read ARQUIVO echo -n "Qual a permissao que deseja d ao arquivo: (ex. 744,700,777)" read PCHMOD
PERMISSAO $ARQUIVO $PCHMOD
3. Funes em shell script no recebe parmetros em sua declarao.Explique uma forma de se passar parmetros em uma funo Shell script. Implemente um script para imprimir seu nome completo usando a passagem por parmetro. #!/bin/bash function ASSINATURA() { echo "Seu nome completo $1 $2 $3 $4" }
for name in 1 2 3 4 do echo -n "Digite Seu $name Nome: " read name$name done