• Nenhum resultado encontrado

Plano de Aula: Programação avançada 3 - Subshell e shell restrito PROGRAMAÇÃO PARA SERVIDORES - CCT0327

N/A
N/A
Protected

Academic year: 2021

Share "Plano de Aula: Programação avançada 3 - Subshell e shell restrito PROGRAMAÇÃO PARA SERVIDORES - CCT0327"

Copied!
7
0
0

Texto

(1)

Plano de Aula: Programação avançada 3 - Subshell e shell

restrito

PROGRAMAÇÃO PARA SERVIDORES -CCT0327

Título Programação avançada 3 - Subshell e shell restrito Número de Aulas por Semana Número de Semana de Aula 10 Tema Subshell e shell restrito Objetivos O aluno deverá ser capaz de: Compreender o conceito de subshells; Entender o funcionamento de um subshell; Criar rotinas paralelas com subshell; Entender os mecanismos de segurança de um shell restrito; Desenvolver scripts usando shell restrito; Estrutura do Conteúdo 1. Subshell

Um subshell é uma instância separada do processador de comandos. Assim como comandos são interpretados pelo prompt da linha de comando, um script

(2)

é um processamento batch de uma lista de comandos. Cada shell script sendo executado é efetivamente um subprocesso (processo filho) de um shell.

Um shell script pode por si criar subprocessos. Tais subshells permitem ao script realizar um processamento paralelo, executando múltiplas subtarefas simultaneamente.

Para criar um subshell dentro de um script, colocar os comandos do subshell entre parênteses. Por exemplo, criar o script de nome "teste_subshell.sh" com o seguinte conteúdo: ( while [ 1 ] do sleep 1 echo "Dentro do loop 1 ..." done ) e executar com o comando: bash teste_subshell.sh Se em outro terminal entrar com o comando: ps -ef | grep teste_subshell.sh será apresentado: UID PID PPID C STIME TTY TIME CMD root 25357 31092 0 21:01 pts/2 00:00:00 bash teste_subshell.sh root 25358 25357 0 21:01 pts/2 00:00:00 bash teste_subshell.sh mostrando 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 isto um comando interno executa mais rápido e consome menos recursos 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. Desta forma um subshell pode ser utilizado para criar um ambiente específico para determinado bloco de comandos. COMANDO1 COMANDO2

(3)

( PATH=/home/fabio/bin COMANDO3 COMANDO4 exit # sai apenas do subshell ) # o shell pai não eh afetado e seu ambiente eh preservado COMANDO5 COMANDO6 1.1 Execução paralela dentro de um subshell

Para colocar um comando executando em segundo plano basta colocar o símbolo & no final do comando. Da mesma forma para executar um subshell em segundo plano basta colocar o símbolo & após o fechamento do parentese. ( while [ 1 ] do sleep 1 echo "Dentro do loop 1 ..." done )& ( while [ 1 ] do sleep 1 echo "Dentro do loop 2 ..." done )& ( while [ 1 ]

(4)

do sleep 1 echo "Dentro do loop 3 ..." done ) No exemplo acima o primeiro e o segundo blocos executam paralelamente em segundo plano, enquanto o terceiro bloco executa em paralelo aos dois primeiros.

No exemplo abaixo o script termina sua execução, mas os dois blocos anteriores continuam executando em segundo plano até terminarem seus respectivos loops. ( i=1 while [ $i -le 5 ] do sleep 1 echo "Dentro do loop 1 ($i)..." let i=i+1 done )& ( i=1 while [ $i -le 5 ] do sleep 2 echo "Dentro do loop 2 ($i)..." let i=i+1 done )& echo "Fim do script."

(5)

Para fazer com que o script continue sua execução somente após o termino dos blocos que estão em segundo plano, pode ser utilizado o comando interno wait: ( i=1 while [ $i -le 5 ] do sleep 1 echo "Dentro do loop 1 ($i)..." let i=i+1 done )& ( i=1 while [ $i -le 5 ] do sleep 2 echo "Dentro do loop 2 ($i)..." let i=i+1 done )& wait echo "Fim do script." 2. Shell restrito

Executar um script ou parte de um script em modo restrito desativa alguns comandos, 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.

Os seguintes comandos e ações são desabilitados: Utilizar o comando cd para alterar o diretório.

(6)

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. #!/bin/bash # Iniciando o script com "#!/bin/bash -r" # executa todo o script em modo restrito echo echo "Mudando o diretorio." cd /usr/local echo "Agora em `pwd`" echo "Voltando para o home." cd echo "Agora em `pwd`" echo # Até aqui tudo normal, estamos em modo n restrito set -r echo "==> Agora em modo restrito. <==" echo echo "Tentando mudar o diretório em modo restrito." cd .. echo "Ainda em in `pwd`" echo echo "\$SHELL = $SHELL" echo "Tentando mudar o shell em modo restrito."

(7)

SHELL="/bin/ash" echo echo "\$SHELL = $SHELL" echo echo "Tentando redirecionar a saída em modo restrito." ls -l /usr/bin > bin.files ls -l bin.files echo exit 0 Aplicação Prática Teórica Estudo dirigido: leitura do capítulo 15 do livro "Classic Shell Scripting".

Referências

Documentos relacionados

Salienta-se por fim, a importância de identificar o comportamento e as principais motivações de uso desse canal de autoatendimento pelos seus usuários, tendo em vista

Outro ponto importante desta pesquisa é que o resultado de como trata essa pessoa presa, vai impactar diretamente na vida da sociedade a que ela pertence, pois ao sair do

As análises aqui realizadas, sobre as reescrituras Pedreira das Almas, de Jorge Andrade, e O Caldeirão de Santa Cruz do Deserto e Outras Poéticas do Amor, de

Essa vari´avel deve iniciar com o valor zero, e para cada n´umero da sequˆencia, se o n´umero lido ´e positivo, ser somada com mais esse n´umero, at´e o final da

O objetivo do presente estudo foi realizar uma avaliação do correto preenchimento do campo 34 identificando se está ocorrendo subnotificação dos casos de anomalia congênita visando a

Assim como a Intemet, a Intranet também tem seu papel fundamental nas organizações parao gerenciamento dos sistemas empresariais. Em verdade a intranet é o

Nos tanques de teto fixo acumula-se um volume apreciável de gases e vapores, sobre o nível do líquido armazenado, chamado de espaço de vapor, e o mecanismo principal das perdas e

(32) O trabalho realizado pela força elétrica do campo elétrico para deslocar uma carga entre dois pontos pertencentes à mesma linha de força é nulo.. (64) Potencial