Buscar

10 Programação avançada 4: Trabalhando com arquivos, Subshell e Shell Restrito

Prévia do material em texto

22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 1/13
Programação para
Servidores
Aula 10 - Programação avançada 4:
Trabalhando com arquivos, Subshell e Shell
Restrito
INTRODUÇÃO
Nesta última aula, veremos diversas situações em que podemos empregar scripts na manipulação de arquivos, desde
operações simples, como listá-los, até a alteração de características, como direitos de acesso e data.
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 2/13
Veremos ainda um recurso muito interessante que permite criar arquivos temporários com diversas �nalidades dentro
do sistema. Finalizaremos com o estudo dos processos no shell.
OBJETIVOS
Identi�car arquivos no sistema;
Manipular horários de acessos a arquivos;
Praticar com arquivos temporários;
Explicar o conceito e o funcionamento de subshells;
Construir rotinas paralelas com subshell;
Desenvolver scripts usando shell restrito.
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 3/13
AGENDAMENTO DE TAREFAS
O cron é um daemon que permite o agendamento da execução de um programa para um determinado
dia/mês/ano/hora.
É muito usado em tarefas de arquivamento de logs, teste da integridade do sistema e execução de programas em
horários pré-determinados.
Os arquivos responsáveis pela manutenção automática do sistema encontram-se em arquivos individuais localizados
nos diretórios:
Crontab (glossário) é o programa que edita o arquivo onde são especi�cados os comandos a serem executados e a
hora e dia de execução pelo cron.
Ao solicitar a abertura de um arquivo para edição, o mesmo será aberto em um editor de textos que segue o padrão do
editor “vi”.
O arquivo de controle segue uma formatação baseada em campos:
O campo pode conter um asterisco, o que signi�ca que todos os períodos serão marcados, sejam eles horários, dias ou
meses.
Pode-se utilizar intervalos de números (glossário), que são indicados por dois números separados por um hífen.
É possível utilizar listas (glossário), que são representadas por números (ou intervalos) separados por vírgulas.
Um “/número” (glossário) imediatamente após um intervalo especi�ca um passo no valor do número através do
intervalo. Esses intervalos também são permitidos depois de um asterisco. Logo, se for simplesmente desejável que
uma ação ocorra a cada duas horas, pode-se utilizar "*/2".
O último campo serve para especi�car o comando a ser executado.
Veremos agora um arquivo do crontab:
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 4/13
O arquivo /etc/cron.deny lista os usuários que não podem utilizar o crontab.
Caso haja a necessidade de executar um comando uma única vez no futuro, pode ser utilizado o comando at.
As sintaxes para o comando at (glossário) são:
LISTANDO ARQUIVOS
Uma forma simples de listar arquivos é por intermédio do comando echo.
O shell expande os curingas e o echo os exibe em uma lista separada por espaço, sem interpretar argumentos.
O comando ls, por sua vez, sabe que seus argumentos devem ser arquivos.
Outra diferença é que o ls ajusta sua exibição de acordo com a largura da janela, arrumando a saída em colunas.
Se precisar que a saída seja um arquivo por linha, pode-se utilizar uma das formas abaixo para o comando:
As principais opções do comando ls são:
Arquivos cujo nome começam por ponto (“.”) não são listados por ls, a menos que seja utilizada a opção “-a”.
MODIFICANDO HORÁRIO DE ATUALIZAÇÃO
O comando touch (glossário) sem opções pode ser utilizado para criar arquivos.
É bastante comum a criação de arquivos vazios por scripts para indicar que está sendo realizada determinada tarefa.
Quando utilizado em arquivos já existentes, o touch serve para modi�car o último horário de acesso (opção "-a") ou de
modi�cação (opção "-m" ou sem opção) do arquivo.
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 5/13
Se o horário não for informado, será utilizado o horário corrente. Porém, o horário pode ser especi�cado pela opção "-t",
que utiliza o formato [[CC]YY]MMDDhhmm[.SS].
Pode também ser utilizada a opção "-r" para copiar a marca de tempo de um arquivo de referência, como no exemplo:
ARQUIVOS TEMPORÁRIOS
PROCURANDO ARQUIVOS
Para buscar por arquivos recursivamente a partir de um determinado diretório, é utilizado o comando �nd (glossário).
Além de encontrar arquivos, o �nd é capaz de executar uma série de operações sobre os arquivos encontrados.
As principais opções do comando �nd são:
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 6/13
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 7/13
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 8/13
SUBSHELL
Para exempli�car, criaremos o script de nome "teste_subshell.sh" com o seguinte conteúdo:
Vamos executar com o comando:
Se em outro terminal entrarmos com o comando:
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 9/13
Será apresentado:
Nesse exemplo, observamos que o script que possui PID 25357 deu origem ao subshell 25358.
Um comando externo executado em um script gera um subprocesso, enquanto um comando interno não gera qualquer
subprocesso. Por isso, um comando interno executa mais rápido e consome menos recursos do que comandos
externos equivalentes.
Variáveis em um subshell não são visíveis fora do bloco do subshell. Não sendo, assim, acessíveis pelo processo pai.
Dessa forma, um subshell pode ser utilizado para criar um ambiente especí�co para determinado bloco de comandos.
EXECUÇÃO PARALELA DENTRO DE UM SUBSHELL
Veja o exemplo a seguir. Observe que o primeiro e o segundo blocos executam paralelamente em segundo plano,
enquanto o terceiro bloco executa em paralelo aos dois primeiros.
No próximo exemplo, o script termina sua execução, mas os dois blocos anteriores continuam executando em segundo
plano até terminarem seus respectivos loops.
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 10/13
Para fazer com que o script continue sua execução somente após o término dos blocos que estão em segundo plano,
pode ser utilizado o comando interno wait:
SHELL RESTRITO
Executar um script ou parte de um script em modo restrito desativa alguns comandos (glossário), tornando-os
indisponíveis.
É uma medida de segurança destinada a limitar os privilégios do usuário do script e minimizar possíveis danos
causados pela execução do script.
Veja o exemplo:
ATIVIDADE
Vamos praticar com uma atividade:
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 11/13
Cite o trecho de texto que deve ser inserido no crontab para agendar a execução de:
• /home/scripts/agenda1.sh às segundas-feiras às 06:00 da manhã; e 
• /home/scripts/backup.sh todos os dias às 11:00 horas da noite.
Resposta Correta
Glossário
CRONTAB
Ele possui os seguintes parâmetros:
• -l usuário: lista as tarefas agendadas para o usuário; 
• -e usuário: edita o agendador; 
• -d usuário: apaga o arquivo do usuário.
INTERVALOS DE NÚMEROS
Por exemplo, 8-10 em uma entrada horas especi�ca execução às 8, às 9 e às 10 horas.
LISTAS
Por exemplo: 1,2,5,6,12-17,21,23.
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 12/13
“/NÚMERO”
Por exemplo, 0-23/2 pode ser usado no campo das horas para especi�car que o comandodeve ser executado a cada duas horas
(0,2,4,6,8,10,12,14,16,18,20,22).
COMANDO AT
Os parâmetros são:
• hh: hora da execução; 
• mm: minuto da execução; 
• DD: dia da execução; 
• MM: mês da execução; 
• AAAA: ano da execução; 
• Comando: comando/programa a ser executado.
Para o gerenciamento dos agendamentos feitos com o at, existem os comandos atq (mostra os agendamentos na �la) e atrm
(remove agendamentos da �la).
COMANDO TOUCH
Por exemplo, o comando:
Esse comando irá criar um arquivo vazio de nome “teste.txt” dentro do diretório de trabalho do script.
MKTEMP
Quando utilizado sem parâmetros, o mktemp cria um arquivo temporário no diretório apropriado ("/tmp") e retorna o nome deste
arquivo.
Somente o dono do processo que fez a chamada à mktemp terá permissão para ler e/ou escrever no arquivo.
Caso deseje escolher parte do nome do arquivo, deve especi�car o nome com caracteres "X" no �nal do arquivo. Dessa forma,
todos os "X" serão substituídos por caracteres aleatórios e o arquivo será criado no diretório de trabalho do script.
Para criar no diretório temporário, deve ser utilizada a opção "-t". A opção -d pode ser utilizada para criar um diretório no lugar de
um arquivo.
Veja um exemplo:
COMANDO FIND
Sua sintaxe é:
22/06/2018 Disciplina Portal
http://lms4.2.webaula.com.br/portaldoaluno/training/classroom?classId=653021 13/13
COMANDOS DESATIVADOS
Os seguintes comandos e ações são desabilitados:
• Utilizar o comando cd para alterar o diretório; 
• Alterar os valores das variáveis de ambiente $PATH, $SHELL, $BASH_ENV ou $ENV; 
• Ler ou alterar opções do shell ($SHELLOPTS); 
• Redirecionar a saída; 
• Executar comando contendo uma ou mais barras (/); 
• Chamar exec para substituir o shell por um processo diferente.

Continue navegando