Baixe o app para aproveitar ainda mais
Prévia do material em texto
OPERAÇÃO COM ARQUIVOS: -e arq verifca se o arquivo existe -s arq verifca se o arquivo existe e tem tamanho maior que zero -f arq verifca se ele é um arquivo -d dir verifcar se ele é um diretório -z arq verifca se o arquivo existe e tem tamanho zero -r arq quero saber se o usuário que esta executando o shell script pode ler o arquivo -w arq quero saber se pode alterar o arquivo -x arq quero saber se ele consegue executar o arquivo OPERAÇÃO COM STRING -n string se é maior que zero -z string se igual a zero OPERAÇÃO COM INTEIROS n1 -eq n2 – igual n1 -gt n2 – maior n1 -lt n2 – menor ... Ver $man test GREP -i ignora maiúscula e minúscula -c contar quantas coincidências -l não mostra a linha encontrada -v Mostra as linhas não coincidentes -n Mostra a linha dentro do arquivo Metacaracteres . - Um caracter qualquer [.…]- Lista de caracteres permitidos [^...] - Lista de caracteres não permitidos ? - Zero ou um caracter * - Zero, um ou mais caracteres + - Um ou mais {n,m} – De n até m ^ - Início da linha $ - Fim da linha Classe POSIX Significado [:upper:] Letras maiúsculas [A-Z] [:lower:] Letras minúsculas [a-z] [:alpha:] Letras maiúsculas/minúsculas [A-Za-z] [:alnum:] Letras Letras e Números [A-Za-z0-9] [:digit:] Números [0-9] [:blank:] Espaço e TAB [ \t] if TESTE then comandos elif TESTE comandos else comandos fI # Lista o conteúdo de um array array=(1 2 3 4 5 6 7 8 9 10) for i in ${array[*]} do i=$[i-1] echo ${array[$i]} done Exercício proposto em sala 1) Mostre os dados de rede: MAC Address, End IP, Máscara, End Rede e Gateway #!/bin/bash # Por. Marco Aurelio Rocha - 07/07/2019 # Obtenção de dados de Rede clear ; echo "Pesquisando..." ; sleep 2 clear echo echo IP=$(ip a | grep -w inet | grep -v 127.0 | awk '{printf $2}' | cut -d"/" -f1) MAC=$(ip a | grep ether | awk '{print $2}') NETWORK=$(ip ro | awk '{print $1}' | grep ^[0-2]) GATEWAY=$(route -n | grep UG | awk '{print $2}') MASK=$(ip a | grep -w inet | grep -v 127.0 | awk '{print $2}' | cut -d"/" -f2) echo "ENDERECO IPv4 = $IP" echo "MASCARA DE REDE = $MASK" echo "NETWORK = $NETWORK" echo "GATEWAY = $GATEWAY" echo "MAC ADDRESS = $MAC" echo CursoLinux-Aula9_ShellScript-1 Exercícios de Fixação 1) Liste as linhas do arquivo /etc/group em que o usuário aluno esteja presente. #!/bin/bash # Liste as linhas do arquivo /etc/group em que o usuário aluno esteja presente. # Por.: Marco Aurélio Rocha 07/07/19 echo grep aluno /etc/group 2) Liste todos os usuários do sistema, apresentando na saída do comando apenas o nome do usuário e seu respectivo UID. #!/bin/bash # Liste todos os usuários do sistema, apresentando na saída do # comando apenas o nome do usuário e seu respectivo UID. # Por.: Marco Aurélio Rocha 07/07/19 clear echo "Usuários e seus respectivos UIDs" echo cat /etc/passwd | sed 's/:/ /g' | awk '{print $1,$3}' 3) Liste apenas as linhas do /etc/passwd com usuários que iniciem com “a”. #!/bin/bash # Liste apenas as linhas do /etc/passwd com usuários que iniciem com .a.. # Por.: Marco Aurélio Rocha 07/07/19 clear echo grep ^a /etc/passwd echo 4) Liste apenas as 5 últimas linhas do arquivo /etc/passwd que terminem com a expressão “/bin/sh”. #!/bin/bash # Liste apenas as 5 últimas linhas do arquivo /etc/passwd que terminem # com a expressão ./bin/sh.. # Por.: Marco Aurélio Rocha 07/07/19 clear echo cat /etc/passwd | grep /bin/bash$ | tail -n 5 echo 5) Altere a saída do comando lspci para apresentar a seguinte saída para placas de vídeo, som e rede: # lspci | <xxx | xxx | xxx> 00:14.2 Placa de som: ATI Technologies Inc SBx00 Azalia (Intel HDA) 01:05.0 Placa de Vídeo: ATI Technologies Inc RS690 [Radeon X1200 Series] 02:00.0 Placa de rede: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E #!/bin/bash # Altere a saída do comando lspci para apresentar a seguinte saída para placas de vídeo, som e rede: # lspci | <xxx | xxx | xxx> # 00:14.2 Placa de som: ATI Technologies Inc SBx00 Azalia (Intel HDA) # 01:05.0 Placa de Vídeo: ATI Technologies Inc RS690 [Radeon X1200 Series] # 02:00.0 Placa de rede: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E # Por.: Marco Aurélio Rocha 07/07/19 clear echo lspci | grep -E 'Multimedia|VGA|Ethernet' | sed 's/VGA compatible controller/Placa de Video/' | sed 's/Ethernet controller/Placa de Rede/' | sed 's/Multimedia audio controller/Placa de som/' echo Exercícios de Fixação Crie um shell script com a seguinte saída: ------- Descrição do sistema ------------- Sistema operacional: $OS Processador: $CPU Clock da CPU: $CLOCK Memória da Máquina: $MEM Placa de vídeo: $VGA Placa de Rede: $NET Placa de Som: $SOUND Esta máquina já está no ar: $UPTIME #!/bin/bash # EVEREST DE POBRE # Por.: Marco Aurélio Rocha 07/07/19 clear OS=$(uname) CPU=$(cat /proc/cpuinfo | grep 'model name' | cut -d":" -f2 | sed 's/ //') CLOCK=$(cat /proc/cpuinfo | grep 'model name' | cut -d":" -f2 | awk '{print $6}') MEM=$(cat /proc/meminfo | grep -i MemTotal | awk '{print $2}') VGA=$(lspci | grep VGA | cut -d":" -f3 | sed 's/ //') NET=$(lspci | grep -i ethernet | cut -d: -f3 | sed 's/ //') SOUND=$(lspci | grep -i multimedia | cut -d: -f3 | sed 's/ //') UPTIME=$(uptime -p | awk '{print $2" " $3}') echo "--------------- Descrição do sistema ---------------" echo "Sistema operacional: $OS" echo "Processador: $CPU" echo "Clock da CPU: $CLOCK" echo "Memória da Máquina: $MEM bytes" echo "Placa de vídeo: $VGA" echo "Placa de Rede: $NET" echo "Placa de Som: $SOUND" echo "Esta máquina já está no ar: $UPTIME" CursoLinux-Aula10_ShellScript-2 Estrutura de decisão Exercícios utilizando a estrutura de decisão (if): 1) Crie um shell script que receba dois números inteiros (entre 0 e 100) e informe se o primeiro é maior, menor ou igual ao segundo; #!/bin/bash # Crie um shell script que receba dois números inteiros (entre 0 e 100) # e informe se o primeiro é maior, menor ou igual ao segundo; # Por.: Marco Aurélio Rocha 07/07/19 read -p "Entre com o primeiro número: (de 0 à 100)" NUM1 read -p "Entre com o segundo número: (de 0 à 100)" NUM2 if [[ "$NUM1" -eq "$NUM2" ]] then echo "Os números são iguais!" elif [[ "$NUM1" -gt "$NUM2" ]] then echo "O primeiro número é maior" else echo "O primeiro número é menor" fi exit 0 2) Escreva um script que receba um arquivo por parâmetro, com caminho absoluto, e informe se o arquivo existe, se tem tamanho maior que zero e se for um diretório liste seu conteúdo; #!/bin/bash # Escreva um script que receba um arquivo por parâmetro, com # caminho absoluto, e informe se o arquivo existe, se tem # tamanho maior que zero e se for um diretório liste seu conteúdo. # Por.: Marco Aurélio Rocha 07/07/19 FILE="$1" clear if [ -s "$FILE" ] then echo "Arquivo $FILE existe e tem tamanho maior que zero!" else echo "Arquivo não existe" fi if [ -d "$FILE" ] then echo "$FILE é um diretório. Segue seu conteúdo:" sleep 2 ls -m $FILE | more exit 1 else echo "$FILE é um arquivo!" fi exit 0 3) Crie um programa que recebe um comando simples, por parâmetro, verifique se ele realmente existe no sistema (informando sua ausência) e informe o caminho absoluto do seu binário. No final pergunte ao usuário se ele deseja ver o manual on-line do comando recebido. (considere um comando válido os comandos encontrados pelo utilitário which) #!/bin/bash # Crie um programa que recebe um comando simples, por parâmetro, verifique se # ele realmente existe no sistema (informando sua ausência) e informe o # caminho absoluto do seu binário. No final pergunte ao usuário se ele deseja # ver o manual on-line do comando recebido. (considere um comando válido os # comandos encontrados pelo utilitário which) # Por.: Marco Aurélio Rocha 07/07/19 COMANDO=$1 clear if which$COMANDO &>/dev/null then echo "$COMANDO é um comando válido" echo "Caminho absoluto de $COMANDO: ";which $COMANDO else echo "Não é um comando válido" exit 1 fi exit 0 Estrutura de decisão Exercícios utilizando a estrutura de decisão (case): 1) Crie um shell script que limpe a tela, forme um menu solicitando a idade do usuário, e exiba as seguintes informações de acordo com a idade informada: 1-13 Você é uma Criança, vá brincar. 14-17 Adolecente, vá estudar. 18-60 Adulto, vá trabalhar. 61-99 Apto para o clube da melhor idade! Qualquer outro valor: “Idade inválida!” #!/bin/bash # Crie um shell script que limpe a tela, forme um menu solicitando # a idade do usuário, e exiba as seguintes informações de acordo # com a idade informada: # 1-13 Você é uma Criança, vá brincar. # 14-17 Adolescente, vá estudar. # 18-60 Adulto, vá trabalhar. # 61-99 Apto para o clube da melhor idade! # Qualquer outro valor: “Idade inválida!” # Por.: Marco Aurélio Rocha 07/07/19 clear read -p "Informe sua idade: " IDADE echo;echo case $IDADE in 1 | 1[1-3])echo "Você é uma Criança, vá brincar.";; 1[4-7])echo "Adolecente, vá estudar.";; 1[8-9] | [2-5][0-9] | 60)echo "Adulto, vá trabalhar.";; 6[1-9] | [7-9][0-9])echo "Apto para o clube da melhor idade!";; *) echo "Idade inválida!" esac echo Laços Exercícios de Fixação utilizando a estrutura de repetição (for): 1) Verifique no sistema quantos usuários existem, quantos são usuários de sistema (UID abaixo de 1000) e quantos são usuários criados para uso (UID igual ou acima de 1000). Informe quantos usuários utilizam o bash como shell, quantos utilizam sh e quantos estão bloqueados para uso com shell (/bin/false). #!/bin/bash # Verifique no sistema quantos usuários existem, quantos # são usuários de sistema (UID abaixo de 1000) e quantos # são usuários criados para uso (UID igual ou acima de 1000). # Informe quantos usuários utilizam o bash como shell, quantos # utilizam sh e quantos estão bloqueados para uso com shell (/bin/false). # Por.: Marco Aurélio Rocha 07/07/19 TOT_USUARIOS=0 UID_ABAIXO=0 UID_ACIMA=0 UTILIZAM_BASH=0 UTILIZAM_SH=0 BLOQUEADOS=0 clear for LINHA in $(cat /etc/passwd | sed 's/ /:/g') do let TOT_USUARIOS++ done for LINHA in $(cat /etc/passwd | sed 's/ /:/g' | awk -F: '$3<1000 {print $0}') do let UID_ABAIXO++ done for LINHA in $(cat /etc/passwd | sed 's/ /:/g' | awk -F: '$3>=1000 {print $0}') do let UID_ACIMA++ done for LINHA in $(cat /etc/passwd | sed 's/ /:/g' | grep /bin/bash$) do let UTILIZAM_BASH++ done for LINHA in $(cat /etc/passwd | sed 's/ /:/g' | grep /bin/sh$) do let UTILIZAM_SH++ done for LINHA in $(cat /etc/passwd | sed 's/ /:/g' | grep /bin/false$) do let BLOQUEADOS++ done echo "1) Total de usuários: $TOT_USUARIOS" echo "2) Usuários de sistema: $UID_ABAIXO" echo "3) Usuários para uso: $UID_ACIMA" echo "4) Usuários que utilizam o bash: $UTILIZAM_BASH" echo "5) Usuários que utilizam o sh: $UTILIZAM_SH" echo "6) Usuários bloqueados para uso com shell (/bin/false): $BLOQUEADOS" exit 0 2) A partir de um diretório, passado por parâmetro, escrever um script que renomeia todos os arquivos de uma determinada extensão (parâmetro) para outra extensão. Exemplo: Todos os arquivos .doc do diretório /tmp alterados para .txt $ ./renomeia.sh /tmp doc txt #!/bin/bash # A partir de um diretório, passado por parâmetro, # escrever um script que renomeia todos os arquivos # de uma determinada extensão (parâmetro) para outra extensão. # Exemplo: Todos os arquivos .doc do diretório /tmp alterados para .txt # $ ./renomeia.sh /tmp doc txt # Por. Marco Aurelio Rocha - 07/07/19 clear DIR=$1 EXT_1=$2 EXT_2=$3 cd $1 for arquivo in *.$EXT_1 do mv $arquivo `echo $arquivo | cut -d. -f1`.$EXT_2 done exit 0 Laços Exercícios utilizando a estrutura de repetição (while/until): 1) Crie um shell script que monitore o tamanho de um diretório, e passar dos 10 MB o script irá enviar um aviso de LOG para o sistema para que o administrador receba o alerta da hora/minuto que isso ocorreu. #!/bin/bash # Crie um shell script que monitore o tamanho de um # diretório, se passar dos 10 MB o script irá enviar um aviso # de LOG para o sistema para que o administrador receba o # alerta da hora/minuto que isso ocorreu. # Por. Marco Aurelio Rocha - 07/07/19 DIR=$1 if [ -z "$DIR" ] then echo "ERRO 1 - Informe um diretório válido..." echo "USE: $0 <diretório>" exit 1 fi TAMANHO=$(du -b $DIR | awk '{printf $1}') echo $TAMANHO while [ $TAMANHO -le 10485760 ] do echo -n "." sleep 0.5 TAMANHO=$(du -b $DIR | awk '{printf $1}' ) done echo logger O diretorio $DIR excedeu 10MB 2) Escreva um script que monitore o tamanho de um arquivo, se o arquivo tiver um tamanho superior a 50 linhas o script irá enviar um aviso de LOG para o sistema para que o administrador receba o alerta da hora/minuto que isso ocorreu. #!/bin/bash # Escreva um script que monitore o tamanho de um arquivo, # se o arquivo tiver um tamanho superior a 50 linhas o script # irá enviar um aviso de LOG para o sistema para que o administrador # receba o alerta da hora/minuto que isso ocorreu. # Por. Marco Aurelio Rocha - 07/07/19 clear FILE=$1 if [ -z "$FILE" ] then echo "Informe um arquivo valido" echo "USE: $0 <arquivo>" exit 1 fi NLINHAS=$(wc -l $FILE | cut -d" " -f1) while [ "$NLINHAS" -le 50 ] do echo -n "*" ; sleep 0.4 NLINHAS=$(wc -l $FILE | cut -d" " -f1) done echo logger "O arquivo $FILE excedeu os 50MB" exit 0 SHELL SCRIPT Exercícios de Fixação Exercício 1 Elaborar um script que receba um número como parâmetro e imprima todos os números pares de 0 até o número informado como parâmetro. Exemplo: ./exercicio4.sh 10 0 2 4 6 8 10 #!/bin/bash # Elaborar um script que receba um número como parâmetro e # imprima todos os números pares de 0 até o número informado # como parâmetro. Exemplo: # ./exercicio4.sh 10 # 0 2 4 6 8 10 # Por. Marco Aurelio Rocha - 07/07/19 read -p "Informe um número par qualquer: " NUM if [[ $NUM != ?(+|-)+([0-9]) ]] then echo "Não é um valor numerico" exit 1 fi seq -s" " 0 1 "$NUM" exit 0 _______________________________ Exercício 2 Elaborar um script que receba dois números como parâmetros e como resultado da sua execução exiba as seguintes informações: - O maior dos números recebidos; - O somatório dos números recebidos. Exemplo: ./exercicio1.sh 23 14 O maior número é 23. A soma dos números é 37. #!/bin/bash # Elaborar um script que receba dois números como parâmetros e como resultado # da sua execução exiba as seguintes informações: # - O maior dos números recebidos; # - O somatório dos números recebidos. # Exemplo: # ./exercicio1.sh 23 14 # O maior número é 23. # A soma dos números é 37. # Por.: Marco Aurélio Rocha 07/07/19 clear NUM1=$1 NUM2=$2 SOMA=$((NUM1 + NUM2)) echo "A soma dos' números é: $SOMA" if [[ "$NUM1" -gt "$NUM2" ]] then echo "O maior número é $NUM1" elif [[ "$NUM2" -gt "$NUM1" ]] then echo "O maior número é $NUM2" fi exit 0 _______________________________ Exercício 3 Escreva um script que receba como parâmetro o caminho de um diretório e liste seus arquivos e diretórios um a um. Se for diretório, deve escrever “(dir)” ao lado do diretório. Exemplo 1: ./exercicio3.sh /tmp arq1 arq2 dir1 (dir) xarq dir2 (dir) #!/bin/bash # Escreva um script que receba como parâmetro o caminho de um diretório e liste seus # arquivos e diretórios um a um. Se for diretório, deve escrever “(dir)” ao lado do diretório. # Exemplo 1: # ./exercicio3.sh /tmp # arq1 # arq2 # dir1 (dir) # xarq # dir2 (dir) # Por.: Marco Aurélio Rocha 07/07/19 clear ENTRADA=$1 if [ ! -d $ENTRADA ] then echo "Nãoé um diretório válido!" exit 1 fi for DIR in $(ls -l "$ENTRADA" | grep ^d | awk '{print $9}') do echo "$DIR (dir)" done for ARQ in $(ls -l "$ENTRADA" | grep ^- | awk '{print $9}') do echo $ARQ done exit 0 _______________________________ Exercício 4 Elaborar um script que receba um nome de arquivo como parâmetro e verifique se esse arquivo existe. Em caso afirmativo, imprimir o seu tamanho em bytes. Exemplo 1: ./exercicio5.sh /etc/fstab O arquivo /etc/fstab existe e tem 861 bytes. Exemplo 2: ./exercicio5.sh /etc/arqqualquer O arquivo /etc/arqqualquer não existe. #!/bin/bash # Elaborar um script que receba um nome de arquivo como parâmetro e verifique # se esse arquivo existe. Em caso afirmativo, imprimir o seu tamanho em bytes. # Exemplo 1: # ./exercicio5.sh /etc/fstab # O arquivo /etc/fstab existe e tem 861 bytes. # Exemplo 2: # ./exercicio5.sh /etc/arqqualquer # O arquivo /etc/arqqualquer não existe. # Por.: Marco Aurélio Rocha 07/07/19 ARQUIVO=$1 if [ ! -f $ARQUIVO ] then echo "O arquivo $ARQUIVO não existe." exit 1 fi TAMANHO=$(du -b $ARQUIVO | cut -f1) clear echo "O arquivo $ARQUIVO existe e tem $TAMANHO bytes". exit 0 ______________________________ Exercício 5 Elaborar um script que apresente ao usuário um menu com as seguintes opções: 1 – Exibir status da utilização das partições do sistema; (df -h) 2 – Exibir relação de usuário logados; (who) 3 – Exibir data/hora; (date) 4 – Sair. Informe sua opção: As linhas acima serão apresentadas aos usuários até que seja escolhida a opção 4 (Sair). Caso seja escolhida alguma opção entre 1 e 3, serão executados os comandos correspondentes e o resultado da execução será apresentado ao usuário. Caso seja informado algum número que não corresponde às opções de menu disponíveis, exibir na tela a mensagem “Opção não disponível. Tente outra vez.”. Exemplo1:Exemplo2: 1 – Exibir status da utilização das partições do sistema; (df -h) 2 – Exibir relação de usuário logados; (who) 3 – Exibir data/hora; (date) 4 – Sair. Informe sua opção: 3 Qua Jun 21 23:43:06 BRT 2006 1 – Exibir status da utilização das partições do sistema; (df -h) 2 – Exibir relação de usuário logados; (who) 3 – Exibir data/hora; (date) 4 – Sair. Informe sua opção: 1 /dev/hda3 9.9G 5.4G 4.1G 57% / /dev/hda1 23M 6.5M 16M 30% /boot /dev/hda6 23G 1.8G 20G 9% /home /dev/hda5 5.0G 3.2G 1.6G 68% /var shmfs 125M 0 125M 0% /dev/shm #!/bin/bash # Elaborar um script que apresente ao usuário um menu com as seguintes opções: # 1 – Exibir status da utilização das partições do sistema; (df -h) # 2 – Exibir relação de usuário logados; (who) # 3 – Exibir data/hora; (date) # 4 – Sair. # Informe sua opção: # As linhas acima serão apresentadas aos usuários até que seja escolhida a opção # 4 (Sair). Caso seja escolhida alguma opção entre 1 e 3, serão executados os # comandos correspondentes e o resultado da execução será apresentado ao usuário. # Caso seja informado algum número que não corresponde às opções de menu # disponíveis, exibir na tela a mensagem “Opção não disponível. Tente outra vez.”. # Por.: Marco Aurélio Rocha 07/07/19 clear echo "########################## MENU DO SISTEMA ########################## # # # 1 – Exibir status da utilização das partições do sistema; (df -h) # # 2 – Exibir relação de usuário logados; (who) # # 3 – Exibir data/hora; (date) # # 4 – Sair. # # # #####################################################################" echo;read -p "Informe uma das opções acima [1-4]: " OPCAO case $OPCAO in 1) echo;echo "Status da utilização das partições do Sistema:" df -h;echo echo "Pressione qualquer tecla para voltar ao Menu de Opções:" read -n 1 ;; 2) echo;echo "Relação de usuários logados no Sistema:" who | awk '{print $1}';echo echo "Pressione qualquer tecla para voltar ao Menu de Opções:" read -n 1 ;; 3) echo;echo "Data e hora:" date "+%d/%m/%y %H:%M";echo echo "Pressione qualquer tecla para voltar ao Menu de Opções:" read -n 1 ;; 4) echo "Saindo . . ." sleep 1 exit 1 ;; *) echo "Opção não disponível. Tente outra vez." echo sleep 2 ;; esac ./$0 exit 0 Exercício 6 Todos os semestres a coordenação exige que o professor repasse a ela os dias em que serão utilizados o laboratório. Essas datas baseiam-se nos dias da semana em que são ministradas as aulas. Como nossa disciplina exige uso intensivo do laboratório, o professor repassa a coordenação todas as datas do semestre letivo em que são ministradas as aulas de LPI, para que possamos usar o laboratório 100% do tempo disponível. Esse é um processo trabalhoso, que envolve a busca dessas informações em um calendário e a transcrição das datas para um e-mail que é enviado à coordenação. Para minimizar esse problema, desenvolvam um script que, a partir da informação dos dias da semana em que há aulas de SO, produza todas as respectivas datas do ano em que serão ministradas nossas aulas. (1 – Segunda, 2 – Terça, 3 – Quarta, 4 – Quinta, 5 – Sexta, 6 – Sábado e 7 - Domingo) Exemplo: exercicios7.sh 2010/02/07 2010/07/05 1,3 11/02/2010, 13/02/2010, 18/02/2010, 20/02/2010, 25/02/2010, 27/02/2010, 03/03/2010, 05/03/2010, ... _______________________________ Exercício 7 Considere um determinado diretório que possui vários arquivos textos. Esses arquivos possuem nomes variados, não obedecendo a qualquer critério. Escreva um script que renomeie cada arquivo desse diretório, dando ao arquivo o nome correspondente à primeira palavra encontrada no conteúdo do próprio arquivo. #!/bin/bash # Considere um determinado diretório que possui vários arquivos textos. # Esses arquivos possuem nomes variados, não obedecendo a qualquer # critério. Escreva um script que renomeie cada arquivo desse diretório, # dando ao arquivo o nome correspondente à primeira palavra encontrada # no conteúdo do próprio arquivo. # Por.: Marco Aurélio Rocha 07/07/19 cd /home/marco/textos for RENOMEIA in $(ls *.txt) do for PRIMEIRA in $(cat $RENOMEIA | cut -d" " -f1) do mv $RENOMEIA $PRIMEIRA.txt done done exit 0 _______________________________ Exercício 8 Desenvolva um script que receba palavras interativamente e, a cada palavra recebida, exiba, como resultado, essas palavras ordenadas. Ao ser informada a palavra “sair”, o script é finalizado. Exemplo: exercicio10.sh Informe a palavra a ser incluída na lista ordenada: casa casa Informe a palavra a ser incluída na lista ordenada: abacaxi abacaxi casa Informe a palavra a ser incluída na lista ordenada: bola abacaxi bola casa Informe a palavra a ser incluída na lista ordenada: sair _______________________________ Exercício 9 Desenvolva um script que realize as operações aritméticas básicas (soma, subtração, divisão e multiplicação), recebendo a operação e os operadores como parâmetros: Exemplo: exercicio11.sh 2 + 2 4 exercicio11.sh 2 * 3 6 exercicio11.sh 8 / 4 2 exercicio11.sh 7 - 2 5 _______________________________ Exercício 10 Faça um script que a cada 60 segundos verifique se um determinado usuário está “logado” no sistema, quando o usuário se logar o script deverá: 1 - Informar na tela que o acesso ocorreu; 2 - Enviar uma mensagem de log informando o acesso (hora e em qual console o acesso ocorreu); 3 - Envie uma mensagem para o usuário avisando que seu acesso foi bloqueado; 4 - Cancele todos os processos deste usuário; 5 - Altere seu shell para “/bin/false e bloqueie sua conta utilizando um “!” no campo de senha doarquivo /etc/passwd. Expressões Regulares Exercício de fxação Com base no exemplo dado escreva um shell script que receba um endereço IP e informe se é um endereço válido ou não. $ ValidaIP.sh 10.10.10.102 Endereço IP 10.10.10.102 é um endereço Ipv4 válido. $ ValidaIP.sh 10.10.10.266 O endereço 10.10.10.266 não é um endereço Ipv4 válido.
Compartilhar