910 likes | 1.02k Views
Formação de Administradores de Redes Linux LPI – level 1. SENAC TI Fernando Costa Shell Script e Exercícios. Conceitos Iniciais. O que é Shell?? . programa que conecta e interpreta os comandos . linguagem de programação completa interpretada . possui variáveis;
E N D
Formação de Administradores de Redes LinuxLPI – level 1 SENAC TI Fernando Costa Shell Script e Exercícios
Conceitos Iniciais • O que é Shell?? • . programa que conecta e interpreta os comandos • . linguagem de programação completa interpretada • . possui variáveis; • . construções condicionais e interativas; • . ambiente adaptável ao usuário; • Simplicidade do Shell • . Pipeline • . Sistemas de arquivos • . Sistema operacional UNIX
Conceitos Iniciais • Quando usar : • Interativamente • . Realizar uma operação simples, uma única vez • . Interagir com o comando
Conceitos Iniciais • O Shell Script deverá ser utilizado sempre que for necessário realizar: • . um procedimento complexo usando muitas linhas de comando; • . um procedimento do qual todos os usuários poderão beneficiarse; • . um comando simples usado inúmeras vezes; • . uma tarefa numa data planejada; • . integrar informações de vários sistemas existentes;
Conceitos Iniciais • Produtividade • Linguagem interpretada não compilada • Um programador médio pode duplicar ou triplicar sua produtividade com o uso do Shell • Comparação de Bruce Cox (pai do Objetive C) • shell 1 linha de código • linguagem orientada a objeto 10 linhas de código • linguagem C 100 linhas de código
Conceitos Iniciais • Construção de um Shell Script: • Edite um arquivo -> vi meuprograma • Esse arquivo deve conter na primeira linha: • #! /bin/bash • # -> utilize para comentar uma linha • /bin/rm arquivo • É recomendável passar o ``caminho'' (path) dos comandos.
Conceitos iniciais • Exemplo • vi startup • a • who am i • pwd • echo Meu diretório Home eh $HOME [ESC] • ZZ • $ chmod +x startup
Conceitos Iniciais • vi myecho • a • echo $1 [ESC] • ZZ • chmod +x myecho • myecho LPI • LPI
Conceitos Iniciais • Posição de Argumentos
Conceitos Iniciais • Posição de Argumentos $# -> Número de argumentos $* -> Todos os argumentos $$ -> O PID do processo corrente
Conceitos Iniciais • Exercício • Fazer um script que faça as seguintes tarefas • Listar os diretórios • Mostrar as partições ativas do sistema • Mostrar a memória disponível • Mostrar os processos ativos do usuário
Exemplos de Redirector • Entrada padrão (stdin - standard input): onde o comando vai ler seus dados de entrada. • Saída padrão (stdout - standard output): onde o comando vai escrever seus dados de saída. • Saída de erro (stderr - standard error): onde o comando vai enviar mensagens de erro.
Exemplos de Redirector • Saída em arquivo: a saída padrão (stdout) do comando é desviada para um arquivo usando o operador ">". Vejamos um exemplo: • ls > listagem.txt • Entrada de arquivo: a entrada padrão (stdin) pode ser obtida a partir de um arquivo usando o operador "<". Um exemplo: • rev < listagem.txt • Uso combinado: os dois operadores podem ser usados simultaneamente. • rev < listagem.txt > listrev.txt • Concatenação: a saída padrão pode ser concatenada a um arquivo existente usando-se o operador ">>", como mostra o exemplo: • ls /etc >> listagem.txt • Saída de erros: a saída de erros (stderr) pode ser redirecionada juntamente com a saída standard. Para isso basta usar o modificador "&1" em conjunção com "2>" ou "2>>". Vejamos um exemplo: ppgia:~> ls /xpto > teste.txt ls: /xpto: No such file or directory ppgia:~> ll /xpto 2> erro.txt ppgia:~> cat error.txt ls: /xpto: No such file or directory
Conceitos Iniciais Filtros: STDOUT (tela) STDIN FILTRO (teclado) • grep -i “Arthur” capit1 STDERR (tela) Autor: Lowel Arthur Rei Arthur e os Cavaleiros da Távola • cat arquivo
Conceitos Iniciais • Você pode pensar na maior parte dos comandos do Shell como filtros. • Cada comando também possui duas saídas: • saída-padrão --> stdout • saída-de-erro --> stderr • Cada comando filtra dados da entrada-padrão ou transforma-os de algum modo, passando-os à saída-padrão. Quaisquer erros encontrados são passados à saída-de-erro.
Comandos Iniciais • Comandos de Impressão • ECHO • Escreve argumentos em stdout. • Sintaxe: • echo [opções] string • Opções: • n : não adiciona uma nova linha no stdout antes de imprimir a string, deixando o cursor na linha da mensagem escrita. • CAT • Concatena e imprime. O comando cat não altera dados, ele toma a stdin e a reproduz no stdout. Possui também a opção de varrer o arquivo mas não pára a cada tela do terminal. • Sintaxe: • cat [opções] [ | file1 file2 ...] • Opções: • n : lista as linhas do arquivo numerandoas
Comandos Iniciais • cat • Exemplos: • 1. cat capt1 capit2 > livro • livro irá conter capit1,2 • 2. cat capt3 >> livro • anexe capit3 no livro • 3. cat capit1 • lista capit1 no terminal • 4. cat n capit1 • lista capit1 numerando as linhas • 5. cat > arq1 • direciona o stdin para o terminal e stdout para arq1, assim tudo que for digitado será gravado no arq1. Para encerrar tecle CTRL D.
Comandos Segurança • CHMOD • Para tornar o arquivo do Shell executável, é necessário alterar a permissão do arquivo. • Sintaxe: • chmod [quem] operação acesso arquivo • Opções: • quem: u(usuário), g(grupo), o(outros), a (todos) • operação: +(atribuir), (remover), = • acesso: r(read), w(write), x(execução),
Comandos Segurança • Se a sua shell for executar o comando FTP você deverá alterar a • permissão do arquivo que contém o usuário e a senha para • somente o dono ler, gravar e executar. • Exemplos: • chmod u=rwx,go= arquivo • ls la • rwx 1 lilliam supsof 110 Sep 25 16:33 arquivo
Comandos de Leitura • READ • Sintaxe read var1 [var2...] • Usado em shell para ler texto de forma interativa • Usado com a opção \c por questão de formatação
Comandos de Leitura • Exemplo • Cat getname • echo “Entre com se nome: \c” • Read SEUNOME • echo Olah, $SEUNOME
Comandos de Leitura • Exemplo2 • echo first second third fourth • Read word1 word2 word3 word4 • echo $word4 $word3 $word2 $word1
Comandos de Leitura • Exercícios • Faça um programa que mostra na tela seus argumentos. • Exemplo saída: • echoarg Meu Primeiro Programa • Meu Primeiro Programa • Ainda com base nesse programa suprima a última linha em branco.
Resumo • cat : concatena diversos arquivos na saída padrão. • tac : idem, mas inverte a ordem das linhas. • more : permite a paginação do fluxo de dados. • tr : troca de caracteres entre dois conjuntos. • head : seleciona as "n" linhas iniciais do fluxo de dados.
Resumo • tail : seleciona as "n" linhas finais do fluxo de dados. • wc : conta o número de linhas, palavras e bytes do fluxo. • sort : ordena as linhas segundo critérios ajustáveis. • uniq : remove linhas repetidas, deixando uma só linha. • sed : para operações complexas de strings (trocas, etc).
Resumo • grep : seleciona linhas contendo uma determinada expressão. • cut : seleciona colunas do fluxo de entrada. • rev : reverte a ordem dos caracteres de cada linha do fluxo de entrada. • tee : duplica o fluxo de entrada (para um arquivo e para a saída standard).
Exercícios 1. Determine quanto arquivos normais (não diretórios nem links) existem em /usr. 2 . Qual a sequência de comandos para se obter uma listagem dos usuários da máquina. As informações podem ser obtidas no arquivo /etc/passwd.
Comandos de Seleção • SED • Edita e altera dados. • Sintaxe: sed [opções] stdin > stdout • Opções: • -e “script” : edita e altera dados Onde script pode ser: “s/string antiga/string nova/g” “/string pertencente à linha a ser deletada/d” “s/string a ser deletada//g” • -f arquivo : contém os scripts que devem ser executados. Não coloca-los entre aspas duplas.
Comandos de Seleção • Exercícios • Leia o arquivo /etc/passwd e crie um novo arquivo chamado /home/senacti/usuarios ordenado pelo nome do usuário
Outros Comandos • Cd - altera o diretório corrente • ls - lista o conteúdo do diretório • pwd - mostra qual é o diretório corrente • mkdir - cria diretório • rmdir - deleta diretório • cp - copia arquivo • mv - renomeia arquivo • rm - deleta arquivo
Comandos Exemplos: ls -la cat arquivo mv arqvelho arqnovo pwd mkdir meudir
Substituição de Comandos • Você pode capturar a saída de um comando colocando-o entre (`)-crase • Exemplo • CURDIR=`pwd` ou CURDIR=$(pwd) • echo $CURDIR
Comando expr • Os argumentos são usados como elementos • A expressão é avaliada • O resultado é escrito na saída padrão • Exemplo • Expr 17 + 61 • 78 • Use expr para criar um contador • index=`expr + $index + 1`
Códigos de Retorno • Exemplo • grep root /etc/passwd • echo $? • 0 • grep john /etc/passwd • echo $? • 1 • echo $? • 0
Códigos de Retorno • true • echo $? • 0 • false • echo $? • 1 • echo $? • 0
Comando IF if cmd then cmda cmdb .... fi if cmd then cmda cmdb else cmdx fi
Comando IF if grep $1 /etc/passwd > /dev/null then echo $1 Encontrado exit 0 else echo $1 Não encontrado exit 1 fi
Comando IF • Execução • Finder root • Root Encontrado • Echo $? • 0 • Finder Fernando • Fernando Não Encontrado • Echo $? • 1
Comando IF • Vamos escrever um script que nos diga se uma determinada pessoa, que será passada por parâmetro, fez login no seu computador: • $ cat talogado • # • # Verifica se determinado usuario esta "logado" • # • if who | grep $1 • then • echo $1 esta logado • else • echo $1 nao esta logado • fi
Comando IF • Repare que a execução do talogado gerou uma linha correspondente à saída do who, que não traz proveito algum para o programa; diria até que o ideal seria que ela não aparecesse. Para tal, existe um buraco negro do UNIX que todas as coisas que lá são colocadas desaparecem sem deixar vestígio. Este buraco negro, chamado /dev/null, é um arquivo especial do sistema, do tipo device, no qual todos estão aptos a gravar ou ler (neste último caso, ganhando imediatamente um EOF).
Comando IF • $ cat talogado • # • # Verifica se determinado usuario esta "logado" - versao 2 • # • if who | grep $1 > /dev/null Incluí /dev/null redirecionando a saída do who • then • echo $1 esta logado • else • echo $1 nao esta logado • fi • $ talogado alex • alex esta logado Não apareceu a linha indesejada