serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para...

118
II Curso de Especialização em Redes de Computadores – Configuração e Gerenciamento de Servidores e Equipamentos de Redes 360 horas

Transcript of serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para...

Page 1: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

II Curso de Especialização em Redes de

Computadores – Configuração e

Gerenciamento de Servidores e

Equipamentos de Redes

360 horas

Page 2: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Instalação e configuração de serviços de redes 1 (24hrs)

Prof. Jefer Benedett Dörr22 e 29/novembro e 06/dezembro/2014

Page 3: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Prof. Jefer Benedett Dörr

● Coordenador do curso de Licenciatura em Computação - UFPR Setor Palotina

● Mestre em Informática - UFPR● Especialista em Software Livre com ênfase

em Redes - UNIPAN● Bacharel em Informática - UNIOESTE

[email protected]

Page 4: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Instalação e configuração de serviços de redes 1

Introdução ao uso de virtualização; Instalação de sistema operacional de rede (GNU/Linux); Comandos básicos; Criação de usuários e grupos; Editor de texto; Instalação e gerenciamento de pacotes (instalação, remoção, repositórios); Gerenciamento de partições e volumes lógicos (LVM); Compactação e descompactação de arquivos; Montagem e desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas; Shell Script: conceitos básicos, estrutura, variáveis e manipulação de strings, estruturas condicionais, estruturas de repetição, funções, expressões e uso de parâmetros, redirecionamento de entrada e saída, desenvolvimento de programas de instalação e desinstalação.

Page 5: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Etapas: nos dias 21/11 (4 horas) e 22/11 (8 horas); e dias 28 (4 horas) e 29/11 (8 horas)

1. Introdução2. Instalação3. Virtualização4. Comandos básicos5. Administração do Sistema6. Shell Script

Page 6: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Etapa 5

Administração do Sistema

1. Introdução2. Instalação3. Virtualização4. Comandos básicos5. Administração do Sistema6. Shell Script

https://www.youtube.com/watch?v=udhd9fmOdCs

Page 7: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Editores de texto

mcedit

nano

pico

vi

vim

emacs

Page 8: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Criação e administração de usuários

useradd: apenas cria o usuário;

adduser: cria usuário automatizado;

passwd: altera a senha;

usermod: modifica uma conta;

userdel: remove usuário e arquivos;

deluser: remove apenas o usuário;

Page 9: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Criação e Administração de grupos

groupadd: adiciona grupo ao sistema;

gpasswd: grava senha para o grupo;

groupdel: remove o grupo do sistema;

chage: configura expiração da conta;chage -E 2016-12-25 jefer

Page 10: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Gerenciamento de Permissões

Page 11: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

drwx------ ... 2 jefer ............. 512 Jan ... 29 23:30 .. Arquivos/-rw-rw-r-- ... 1 jefer ....... 280232 Dec .. 16 22:41... notas.txt

r => significa permissão de leitura (read); w => significa permissão de gravação (write); x => significa permissão de execução (execution); - => significa permissão desabilitada.

Page 12: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Permissão Binário Decimal

--- 000 0--x 001 1-w- 010 2-wx 011 3r-- 100 4r-x 101 5rw- 110 6rwx 111 7

Page 13: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

A ordem em que as permissões devem aparecer é rwx.

Sendo assim, vamos entender a string do nosso exemplo dividindo-a em 4 partes:

D r w x - - - - - -

- é um diretório (d);- o proprietário pode alterá-lo, gravá-lo e executá-lo (rwx);- o grupo não pode pode alterá-lo, gravá-lo, nem executá-lo (- - -);- os demais usuários não podem alterá-lo, gravá-lo, nem executá-lo (- - -).

Page 14: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

chmod

chmod:

$ chmod 755 leiame.txt

$ chmod u=rwx, go=rx leiame.txt

$ chmod +x shell.sh

Page 15: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

chown

Chown altera dono e grupo

$ chown jefer.posutfpr leiame.txt

$ chowm .posutfpr leiame.txt

$ chown -R jefer /home/jefer

Page 16: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

chgrp

chgrp altera o grupo;

$ chgrp -R users /home

Page 17: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Instalação e gerenciamento de pacotes

Page 18: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

apt

O APT busca em /etc/apt/sources.list por sua lista de origens (sources)

http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html

Page 19: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Atualizando seu cache de pacotes local

Toda vez que você quiser instalar ou atualizar um aplicativo, você primeiramente, deveráatualizar seu cachê de pacotes. Isso assegura que você tenha as últimas informaçõessobre o aplicativo que você está instalando.prompt$ apt-get update

Page 20: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Vendo os pacotes disponíveis

O utilitário apt-cache permite a você buscar no cachê de pacotes local por pacotes quecontém certos textos.prompt$ apt-cache search apache

Este comando retornou 119 pacotes na minha máquina. Em vez de ler todas as entradas, pode-se filtrar os resultados usando o comando grep

$ apt-cache search apache | grep "^apache"

Page 21: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Ver informações de um pacote prompt$ apt-cache show nomedopacote

Instalar um pacote$ apt-get install nomedopacote

Removendo um pacote$ apt-get remove nomedopacote

Mantendo seu sistema atualizado$ apt-get update$ apt-get upgrade

Page 22: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

dpdddDD O dpkg complementa o apt-get, permitindo instalar pacotes .

deb baixados manualmente.

Digamos que você tenha baixado, por exemplo, o arquivo "skype_1.2.0.18-1_i386.deb", o pacote com o Skype, disponível no http://skype.com.

Para instalá-lo, você usaria o comando:# dpkg -i skype_1.2.0.18-1_i386.deb

DPKG

Page 23: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Gerenciamento de partições

/dev/hdX ou /dev/sdX

fdisk: criar, listar, alterar e apagar partições; fdisk /dev/sda

mkfs: formata as partições; mkfs -t vfat -I /dev/sdb

mkswap: prepara a partição para trabalhar como swap;

df: capacidade utilizada do disco;

du: utilização do disco;

fsck: checa e corrige erros;

/etc/fstab

Page 24: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Volumes lógicos (LVM)

Page 25: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

SWAP

cat /proc/swaps

free -ht s1

cat /proc/sys/vm/drop_caches

Limpar: sysctl -w vm.drop_caches=1

Page 26: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Montagem e desmontagem de dispositivos

mount [opções] [dispositivo] [ponto_de_montagem]

● -a : monta todos os sistemas de arquivos especificados no arquivo

/etc/fstab.

● ro - monta somente como leitura;

O arquivo /etc/mtab possui a lista de todos os sistemas de arquivos

atualmente montados no Linux.

O comando mount sem parâmetros faz o sistema listar o conteúdo do

arquivo /etc/mtab.

● umount - desmonta sistemas de arquivos.

Page 27: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Compactação e descompactação de arquivos

tar

$ tar -cvf <arquivo_final> <origem>

-c: create-v: verbosa-f: será definido nome do arquivo final<origem>: arquivo ou diretório que será compactado

Exemplos:

$ tar -cvf teste.tar *

Page 28: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

tar

$ tar -cvf /tmp/gifs.tar /var/www/htnl/*.tar

Descompactar: (-x descompacta o arquivo f)

$ tar -xvf arquivo.tar

Outras opções: (gzip/gunzip, tar+gzip, tar+bzip)

Page 29: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Comandos para gerenciamento de redes

$ ping

$ ifconfig : ifconfig eth0 down : ifconfig eth0 10.0.0.1 netmask 255.0.0.0

$ ifup / ifdown : ativa ou desativa a interface de rede definada em /etc/network

$ route: route add default gw 10.0.0.100 : route del default gw 10.0.0.100

$ dhclient eth0: solicitar dados de rede

Page 30: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

$ mii-tool: negociação de link de rede

$ ethtool eth0

$ linx/links/elinks/links2 : navegadores

$ wget: download de arquivos

$ netstat: -tunap

$nmap

$ whois: dados sobre domínios

Page 31: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

$ geoiplookup: localização geográfica do ip

$ iptraf: tráfego de rede

$ ethstatus -i eth0

$ ipcalc 192.168.1.0/255.255.255.0

$ dig www.utfpr.br.edu (dnsutils)

$ tcpdump: analisar de tráfego: tcpdump -nAi eth0 udp

$ hostname

Page 32: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Gerenciamento de Contas

susuxwwhoami

adduseruseradduserdelpasswd

Page 33: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Gerenciamento de Arquivos/Diretórios

cattailheadnanomceditmd5sumddwhichdetoxdfdudurep

mkdirrmdircdpwdlsstatrmwipecpmvfind locatechmod

chown lndiffcmptouchfiletree

Page 34: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Gerenciamento de Processos

Memóriafreememstatpmap pidtophtopiotopstress

Processospskillkillalljobs -lbgfgtimenohupstrace (strace -c ls /home)

renice renice +19 1000 -u jeferl

nice nice -n -5 ntpd

ionicefuser .

lsof -u user

Page 35: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Agendamento de Tarefas

cron

$ crontab -l

$ crontab -r

$ crontab -e

sintaxe: minuto hora dia_do_mês mês dia_da_semana /path/comando

15 23 * * * /sbin/reboot

0 0,12 * * 1-3 /sbin/reboot

*/10 * * * * /sbin/reboot

Page 36: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

a=`df -h | grep sda6 | cut -d"%" -f1 | tr -s " " | cut -d " " -f5`

if [$a -gt 80] then echo " hd com $a" fi

Diretórios de agendamento

/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly

Page 37: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Etapa 6

Shell Script

1. Introdução2. Instalação3. Virtualização4. Comandos básicos5. Administração do Sistema6. Shell Script

jefer@acer:~$ cor=azuljefer@acer:~$ echo corCorjefer@acer:~$ echo $corazul

Page 38: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Iniciando#!/bin/bashecho 'Nossa!Estou vivo!' Tornemos então o arquivo executável:

chmod +x arquivo.sh

Ou chmod 755 arquivo.sh

Para executar: ./arquivo.sh

Page 39: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

bash

Se você der o comando "ps", vai ver que um dos programas rodando é o seu shell:

jefer@acer:~$ psPID TTY TIME CMD164 tty2 00:00:00 bash213 tty2 00:00:00 psjefer@acer:~$

Ou seja, o shell utilizado nesse console é o bash, que está rodando com PID 164.

Page 40: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Onde tem shell?

Quer exemplos?

file /usr/bin/* | grep shell

Page 41: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Shell

É muito perigoso estudar shell usando o superusuário, você pode danificar o sistema com um comando errado.

Se você não tem certeza qual o seu usuário, use o comando "whoami" para saber

Page 42: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Formato de Arquivos

A primeira linha de todo shell script deve começar com algo do tipo: #!/bin/bash , a qual indica com qual shell deverá ser executado o script.

Bourne Shell (sh)

Korn Shell (ksh)

Boune Again Shell (bash) *

C Shell (csh)

Page 43: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Variáveis de Ambiente

Algumas variáveis já são predefinidas no shell, como o PATH, que armazena o caminho dos programas. Por exemplo, a minha variável PATH contém:jefer@acer:~$ echo $PATH

/usr/local/bin:/usr/bin: /bin: /usr/X11R6/bin: /usr/openwin/bin: /usr/games: /opt/kde/bin: /usr/share/texmf/bin: /etc/script

É importante destacar que o shell possui várias variáveis pré-definidas, ou seja, que possuem um significado especial para ele, entre elas: PATH, PWD, PS1, PS2, USER e UID.

Para conhecer mais variáveis de ambiente digite:env

Page 44: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Variáveis

Prompt$ HOJE=$(date)echo "Hoje é: $HOJE"Sáb Abr 24 18:40:00 BRT 2004unset HOJEecho $HOJE

Page 45: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

$ variavel="Eu estou logado como usuário $user"$ echo $variavel Eu estou logado como usuário cla

$ variavel='Eu estou logado como usuário $user'$ echo $variavel Eu estou logado como usuário $user

$ variavel="Meu diretório atual é o `pwd`"$ echo $variavel Meu diretório atual é o /home/cla

Page 46: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

ParâmetrosParâmetros$0 : é o nome do shell script (parâmetro zero);$1 a $9 : $1 é o primeiro parâmetro, $9 o nono, assim por diante;${10}, ${11}.. quando o número do parâmetro possui mais de um dígito é necessário o uso das chaves;$* : todos os parâmetros em uma única string (exceto o $0);$@todos os parâmetros, cada um em string separadas (exceto $0);$# número de parâmetros (sem contar com o $0)$? valor de retorno do último comando;$$ PID do script.

Page 47: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Parametros.sh!/bin/bash# "basename" serve para eliminar o caminho do arquivo emostrar# somente o último nome dele. Neste caso: parametros.shecho "Nome do script: `basename $0`"echo "Número total de parâmetros: $#"echo "Primeiro parâmetro: $1"echo "Segundo parâmetro: $2"echo "Décimo quinto parâmetro: ${15}"echo "Todos os parâmetros: $*"

Page 48: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

$ ./parametros.sh a b c d e f g h i j l m n o p q r s t u v x zNome do script: parametros.shNúmero total de parâmetros: 23Primeiro parâmetro: aSegundo parâmetro: bDécimo quinto parâmetro: pTodos os parâmetros: a b c d e f g h i j l m n o p q r s t u v x z

Page 49: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Passagem de Parâmetros

find / -name file -print

#!/bin/bash find / -name $1 -print

#o bash lê a variável "$1", ele a substitui pelo primeiro parâmetro passado na linha de comando para o nosso script.

Page 50: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

;

#!/bin/bashecho "Vou buscar data do sistema. Posso continuar? [sn] " ; read RESPOSTA; test "$RESPOSTA" = "n" && exitecho "Data e Horário:" ;date

Page 51: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Exemplo IF

#!/bin/bash read -p 'Qual foi sua nota na Prova?' nota if test -n "$nota" then if test "$nota" -gt 7 then echo "voce esta aprovado!" else if test "$nota" -eq 10 then echo "show! gabaritou!" else if test "$nota" -ge 2 && test "$nota" -lt 5 then echo "reprovado!" else if test "$nota" -lt 2 then echo "assinou o nome?" else echo "voce apenas passou!" fi ;fi ;fi ; fi ; fi

Page 52: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

test

Page 53: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Interagindo c/ test

#!/bin/bashecho "Vou buscar os dados do sistema. Posso continuar? [s/n] "read RESPOSTAtest "$RESPOSTA" = "n" && exitecho "Data e Horário:"dateecho "Uso do disco:"dfecho "Usuários conectados:"w

Page 54: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Expressões usando strings:

O test pode apenas comparar strings, ou seja, verificar se uma é igual a outra, e verificar se uma string é vazia ou não. Vamos aos exemplos para facilitar o entendimento:jefer@acer:~$ test "a" = "a"jefer@acer:~$ echo $?0

jefer@acer:~$ test "a" = "b"jefer@acer:~$ echo $?1

jefer@acer:~$ test "a" != "b"jefer@acer:~$ echo $?0

Page 55: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

jefer@acer:~$ test -z neo"jefer@acer:~$ echo $?1jefer@acer:~$ test -z ""jefer@acer:~$ echo $?0jefer@acer:~$ test -n “neo"jefer@acer:~$ echo $?0jefer@acer:~$ test -n ""jefer@acer:~$ echo $?1

Ao lado temos os testes de vazio. A opção "-z" verifica se é vazio, e "-n" se não é vazio.

No primeiro caso, ele testa se "neo" é uma string vazia, retornando falso.

No segundo caso, como "" é vazia, retorna verdadeiro.

O terceiro e quarto são semelhantes aos primeiros, mas com "-n".

Page 56: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Expressões com arquivos:

Os testes que podem ser feitos com arquivos são para verificar determinadas caracteristicas, como se ele existe, se é executável, se é um link simbólico, se é um diretório etc.

Alguns exemplos:A opção "-e" verifica apenas se um arquivo existe e a opção "-d" verifica se o arquivo é um diretório.

A opção "-nt" verifica se o primeiro arquivo é mais novo que o segundo (nt = newer than) e "-ot" verifica se o primeiro é mais velho que o segundo (od = older than):

Page 57: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

jefer@acer:~$ test -e vmlinuzjefer@acer:~$ echo $?0jefer@acer:~$ test -d vmlinuzjefer@acer:~$ echo $?1jefer@acer:~$ test -e /usrjefer@acer:~$ echo $?0

jefer@acer:~$ test -d /usrjefer@acer:~$ echo $?0jefer@acer:~$ test /usr -nt /vmlinuzjefer@acer:~$ echo $?0jefer@acer:~$ test /usr -ot /vmlinuzjefer@acer:~$ echo $?1

Page 58: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

A seguir, uma lista de várias opções disponíveis:

* -b arquivo - Verdadeiro se arquivo é um arquivo de bloco, como /dev/hda. * -c arquivo - Verdadeiro se arquivo é um arquivo de caracter, como /dev/tty1. * -d arquivo - Verdadeiro se arquivo é um diretório. * -e arquivo - Verdadeiro se arquivo existe. * -f arquivo - Verdadeiro se arquivo existe e é um arquivo comum. * -s arquivo - Verdadeiro se arquivo existe e não é vazio. * -h arquivo - Verdadeiro se arquivo é um link simbólico. * -p arquivo - Verdadeiro se arquivo é um "named pipe" (fifo, lifo, etc).

Page 59: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

* -S arquivo - Verdadeiro se arquivo é um "socket". * -r arquivo - Verdadeiro se arquivo pode ser lido pelo usuário atual. * -w arquivo - Verdadeiro se arquivo pode ser escrito pelo usuário atual. * -x arquivo - Verdadeiro se arquivo pode ser executado pelo usuário atual. * -O arquivo - Verdadeiro se arquivo pertence ao usuário atual. * -G arquivo - Verdadeiro se arquivo pertence ao grupo do usuário atual. * -N arquivo - Verdadeiro se arquivo foi modificado desde a ultima vez que foi lido.

Page 60: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Execução em foreground e background

o sinal de & depois de um comando.

Exemplo:jefer@acer:~$ cp arquivo1 arquivo2 &[1] 206

A primeira informação ([1]) chama-se job. Ela identifica os programas que estão sendo executados em bg (background). A segunda informação (206) é o pid do programa, ou seja, o número de processo que o kernel dá a esse programa.

Para retornar, usamos o comando fg [job]

Page 61: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Pipes, redirecionamento e backtick

Não são realmente comandos mas são conceitos muito importantes.

pipes (|) envia o output (stdout) de um programa para o input (stdin) de um outro programa. cat ficheiro.txt |grep palavra | wc -l

procura as linhas com a string PALAVRA no ficheiro.txt e conta as linhas.

O output do comando grep é utilizado como input para o comando wc. Dessa forma você pode concatenar os comandos que queira

Page 62: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

redirecionamento: escreve o output de um comando para um aruivo ou adiciona dados a um ficheiro:

> escreve o output para um arquivo e sobrepõe o arquivo antigo caso ele existirEx.: echo oi > oi.txt

echo ola > oi.txt

>> adiciona dados a um arquivo (ou cria um novo se ele ainda não existir mas nunca sobrepõe nada).Ex.: echo oi >> oi2.txt

echo oii >> oi2.txt

Page 63: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

BacktickO output de um comando pode ser utilizado como argumento da linha de comandos para um outro comando. Você pode também utiliza-lo para definir o output de um comando para uma variável.

O comando: find . -mtime -1 -type f -print

procura todos os ficheiros que foram modificados nas ultimas 24 horas (-mtime -2 significaria 48 horas).

Page 64: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Se você quer armazenar esse ficheiros num arquivo tar (ficheiro.tar) a syntax para o tar teria de ser:

tar xvf ficheiro.tar ficheiro1 ficheiro2 ...

Em vez de escrever isso tudo, você pode combinar 2 comandos (find e tar) utilizando backticks. Tar irá arquivar todos os ficheiro que find escreveu:

#!/bin/sh# Backticks (`) , não plicas ('):tar -zcvf ultimamod.tar.gz `find . -mtime -1 -type f -print`

Page 65: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Estruturas de ControleDesvio e Repetição

Page 66: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Estruturas de DesvioCondicionais são comandos que avaliam uma expressão. Se ela for verdadeira, uma determinada rotina é executada. Caso contrário, outra rotina pode ser executada.Controle de fluxo com:IfCaseSelect

Page 67: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

if

o comando IF (ele é um comando embutido no bash e não um programa como o "ls", o "cp" etc.). A forma mais simples de representar uma condicional utilizando o IF, é da seguinte forma básica:

if [condição];then comandos1;else comandos2;fi;

Se [condição] for verdadeira, os comandos1 são executados. Se for falsa, os comandos2 são executados.Mas para o IF, o que é uma condição verdadeira ou uma falsa?

Page 68: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Se [condição] for verdadeira, os comandos1 são executados. Se for falsa, os comandos2 são executados.Mas para o IF, o que é uma condição verdadeira ou uma falsa?

TODO comando em Unix tem um código de retorno. Geralmente o código "0" (zero) significa que o comando foi executado perfeitamente e terminou bem. Códigos maiores que zero significam que alguma coisa de errado ocorreu.

É assim que o IF verifica uma condição. Se o seu código de retorno for zero, então ela é considerada verdadeira. Caso contrario, ela é falsa.Mas então a [condição] tem que ser um comando, certo?

Page 69: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Exemplo:jefer@acer:~$ if ls /boot; then echo "O diretório existe."; else echo "Diretório inválido."; fi;

System.map boot.0300 boot.b boot_message.txt chain.b config map os2_d.bO diretório existe.

Page 70: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

O que aconteceu?Logo após o if, nós colocamos um comando: "ls /boot". O que o IF faz? Ele executa esse comando (por isso que temos a segunda linha começada por "System.map", que é o conteúdo do meu diretório /boot) e avalia o seu código de saída. Como o "ls" foi executado corretamente, ele retorna zero, significando verdadeiro para o IF, que executa o comando logo após o "then", ou seja, o echo "O diretório existe.", mostrando essa mensagem no console.

Page 71: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Agora vamos colocar um diretório que não existe:

jefer@acer:~$ if ls /dir_invalido; then echo "O diretório existe."; else echo "Diretório inválido."; fi;/bin/ls: /dir_invalido: Arquivo ou diretório não encontradoDiretório inválido.

A lógica é a mesma. Executa o "ls /dir_invalido", que retorna um código maior que zero. O IF avalia como falso e executa o comando após o else: echo "Diretório inválido"..

Page 72: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

if [ -e $linux ]then echo 'A variável $linux existe.'else echo 'A variável $linux não existe.'fi

O que este pedaço de código faz? O if testa a seguinte expressão: Se a variável $linux existir, então (then) ele diz que que existe com o echo, se não (else), ele diz que não existe.

Page 73: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

case

geralmente é utilizado como substituição de vários IFs. Um exemplo clássico e muito utilizado é quando precisa testar um parâmetro fornecido na linha de comando. O Case é utilizado desta forma em scripts de inicialização de serviços do sistema.

Exemplo: um script que inicialize/reinicialize ou pare algum serviço (como o sendmail, apache, bind, etc).

Page 74: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Sintaxe:case <parâmetro> in opção 1 ) <comandos 1> ;; opção2 ) <comandos 2> ;; * ) < comandos se não for nenhuma das opções > ;;esac

Page 75: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Explicação: O Case pega a string fornecida em <parâmetro> e compara com <opção 1>. Se forem iguais, ele executa <comandos 1> e sai fora. Caso contrario, ele compara <parâmetro> com <opção 2> e assim por diante.

Caso <parâmetro> não seja igual a nenhuma das opções, ele executa os comandos da opção "*", se este existir.

IMPORTANTE: Prestem atenção a alguns detalhes na sintaxe. Deve existir um ")" após cada opção e também um ";;" após todos os comandos de cada opção. Vejam o exemplo:

Page 76: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

case "$1" in 'start' ) echo "Iniciando o serviço..." <comandos para iniciar o serviço> ;; 'restart' ) echo "Reinicializando o serviço..." <comandos para reinicializar o serviço> ;; 'stop' ) echo "Parando o serviço..." <comandos para parar o serviço> ;; *) echo "Opção invalida!" echo "As opções válidas são: start, stop e restart" ;;esac

Page 77: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

O Case serve para evitar o teste de vários Ifs. No caso acima, teríamos que utilizar 3 Ifs. Mesmo se o primeiro já fosse verdadeiro, o bash iria testar o segundo e o terceiro, ou seja, ia perder tempo desnecessariamente. Já no case isso não acontece. Após entrar em uma opção e executar seus comandos, ele já pula fora do case sem testar as outras opções abaixo.

Page 78: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

select

O Select é um comando de laço que nos permite mostrar um pequeno menuzinho de opções para o usuário. Cada opção possui um número e para escolher, o usuário digita o número correspondente a opção desejada. Vejamos a sintaxe a seguir:

select <var> in <lista de opções>;do <comandos>done;

Page 79: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

o select vai mostrar as opções contidas em <lista de opções>, uma por linha, com um número na frente e espera que o usuário digite a opção desejada. Ao digitar a opção, o select atribui o nome da opção a variável <var> e executa os comandos. Para sair do select, é necessário executar o comando "break". Vamos a um exemplo:

select x in Iniciar Reiniciar Parar Sair; do echo "Opção Escolhida: $x" if [ "$x" == "Sair" ]; then break; fi;done;

Page 80: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

se o usuário escolher alguma opção diferente de "Sair", o script apenas escreve a opção. Se for escolhida Sair, ele mostra a opção, entra no IF e executa o break, saindo do select.

É interessante combinar o Select com o Case. Vamos mostrar como ficaria aquele exemplo do case, de iniciar um serviço, utilizando o Select, para tornar o script interativo:

Page 81: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

select x in Iniciar Reiniciar Parar Sair; do case "$x" in 'Iniciar' ) echo " Iniciando o serviço..." ;; 'Reiniciar' ) echo " Reinicializando o serviço..." ;; 'Parar' ) echo " Parando o serviço..." ;; 'Sair' ) echo " Script encerrado." break ;; *) echo " Opção inválida!" ;; esacdone;

Page 82: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Primeiramente o Select mostra um menu:

1) Iniciar2) Reiniciar3) Parar4) Sair#?

Quando o usuário digitar um número de opção, o select executa o case e este compara a variável x com suas opções. Se achar alguma, executa seus comandos, no caso um echo. Se o usuário escolher Sair, além do echo, ele executa o "break", que interrompe o select:

Page 83: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

neo@matrix:~/test$ ./t1) Iniciar2) Reiniciar3) Parar4) Sair#? 1 Iniciando o serviço...1) Iniciar2) Reiniciar3) Parar4) Sair#? 5 Opção inválida!

1) Iniciar2) Reiniciar3) Parar4) Sair#? 4 Script encerrado.neo@matrix:~/test$

Page 84: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Estruturas de Repetição

whileuntilfor

Page 85: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

WHILE

Ele testa uma condição (como faz o IF) e executa um conjunto de comandos se esta condição for verdadeira. Após a execução desses comandos, ele torna a testar a condição e se esta for verdadeira, ele reexecuta os comandos e assim por diante.

Sua sintaxe é a seguinte:while [ condição ]; docomando 1;comando 2;...done;

Page 86: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

O parâmetro [ condição ] funciona exatamente igual ao do IF. Não voltarei a abortar os parâmetros condicionais pois eles já foram explicados na aula 3. Em caso de dúvida sobre isso, uma rápida revisão na aula 3 é suficiente.

Bom, vamos ao exemplo mais simples do While: um contador.

x = 0While [ "$x" -le 10 ];do echo "Execução número: $x"?; x = $((x+1));done;

Page 87: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Analisando:Na primeira linha temos a condição: enquanto o valor da variável x ( $x ) for menor-igual ( -le ) a 10, faça: mostre "Execução número: " e o valor de x ($x). Faça x = x + 1. Isso no bash é feito pelo comando $(( )). Ele realiza operações algébricas com variáveis. No caso acima, estamos somando x + 1 e colocando o resultado no próprio x.

Preste atenção, que as linhas do While precisam de um ";" para terminar, exceto a que contém o "do", pois ele representa o começo do bloco de comandos.

Quando executamos o script acima, temos uma contagem de 1 até 10:

Page 88: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

jefer@acer:~$ x=0; while [ "$x" -lt 10 ]; do x=$((x+1)); echo"Execução número: $x"; done;Execução número: 1Execução número: 2...Execução número: 9

jefer@acer:~$

Page 89: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

until

Tem as mesmas características do while, a única diferença é que ele faz o contrário. Veja o exemplo abaixo:

variavel="naovalor"until [ $variavel = "valor" ]; do comando1 comando2done

Page 90: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Ao invés de executar o bloco de comandos (comando1 e comando2) até que a expressão se torne falsa, o until testa a expressão e executa o bloco de comandos até que a expressão se torne verdadeira. No exemplo, o bloco de comandos será executado desde que a expressão $variavel = “valor” não seja verdadeira.

Se no bloco de comandos a variável for definida como “valor”, o until pára de executar os comandos quando chega ao done.

Page 91: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Um exemplo para o until que, sintaticamente invertido, serve para o while também:var=1count=0until [ $var = "0" ]; do comando1 comando2 if [ $count = 9 ]; then var=0 fi count=`expr $count + 1`done

Page 92: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Primeiro, atribuímos à variável “$var” o valor “1″. A variável “$count” será uma contagem para quantas vezes quisermos executar o bloco de comandos. O until executa os comandos 1 e 2, enquanto a variável “$var” for igual a “0″. Então usamos um if para atribuir o valor 0 para a variável “$var”, se a variável “$count” for igual a 9. Se a variável “$count” não for igual a 0, soma-se 1 a ela. Isso cria um laço que executa o comando 10 vezes, porque cada vez que o comando do bloco de comandos é executado, soma-se 1 à variável “$count”, e quando chega em 9, a variável “$var” é igualada a zero, quebrando assim o laço until

Page 93: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

for

O for é semelhante ao while usado como um contador.

for <var> in <lista>; docomandosdone;

O For associa o primeiro item da lista de nomes à variável <var> e executa os comandos. Em seguida, associa novamente o segundo item da lista à <var> e executa novamente os comandos... e assim por diante, até acabar a lista.

Page 94: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

jefer@acer::~$ for x in Compra Venda Aluguel; do echo $x; done;CompraVendaAluguel

Ou seja, primeiro ele coloca "Compra" na variável x e executa os comandos, no caso, "echo $x", e assim por diante.

Page 95: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Podemos facilmente implementar um contador, usando em conjunto com o for, o programinha "seq". Ele simplesmente gera uma seqüência de números. Por exemplo, "seq 10" gera uma seqüência de 1 até 10. Assim, podemos usá-lo no for:

for x in $(seq 10); do echo $x; done;

Esse comando é semelhante ao contador implementado com o While. Primeiro o x vale 1 e o for executa os comandos. Depois x vale 2 e ele reexecuta os comandos...

Page 96: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Vamos usar o For para renomear os arquivo de um diretório, mudando todos os arquivo terminados em ".mp3" para ".mp3.bak".

for x in *; do mv "$x" "${x}.bak"; done;for x in *.mp3; do if [ -e "$x" ]; then mv "$x" "${x}.bak"; fi; done;

Page 97: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

No local de <lista> nos colocamos "*.mp3". Isso diz ao bash para expandir (transformar) ele na lista de arquivos terminados com ".mp3". Senão houver nenhum arquivo com essa terminação, o bash não faz nada, ficando para o for a string "*.mp3". Por isso precisamos do IF para testar se o arquivo existe.

Experimente no seu sistema.echo *.mp3

Vai mostrar os arquivos no diretório atual com terminação mp3, mas sem quebra de linha entre eles, ou seja, um nome após o outro. Se não houver nenhum arquivo com terminação mp3, ele apenas vai mostrar "*.mp3"

Page 98: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Bom, voltando ao For, ele vai atribuir a "x" cada nome na lista de arquivos com terminação ".mp3" e executar os comandos seguintes.

Primeiro ele testa para ver se o arquivo existe ( if [ -e "$x" ]; ), e se existir, renomeia ele para o seu próprio nome acrescido de ".bak" ( ${x}.bak ).

Resumindo, o For faz isso: você fornece uma lista de nomes para ele e ele vai atribuindo esses nomes, em ordem e um por vez, à variável <var> e executa os comandos entre o "do" e o "done;".

Page 99: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

metacaracteresSão caracteres especiais. Quando eles são digitados são interpretados de outra forma. Podem ser usados para especificar um ou uma cadeia de outros caracteres. O shell procura no diretório corrente arquivos que casem com esse padrão e os expande.

Usando caracteres coringasGeralmente o caracter "*" é um coringa que significa "qualquer caracter em qualquer quantidade". Por isso se a gente executar "ls *", onde "*" entra no lugar do "nome do arquivo", significando qualquer string de qualquer tamanho. Por isso ele lista todos os arquivos.

Page 100: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Faixas de caracteres também são permitidos: [0-3] é o mesmo que [0123] [a-k] é o mesmo que [abcdefghijk] [A-C] é o mesmo que [ABC] [A-Ca-k] é o mesmo que [ABCabcdefghijk]

Existem também algumas formas alternativas: [[:alpha:]] é o mesmo que [a-zA-Z] [[:upper:]] é o mesmo que [A-Z] [[:lower:]] é o mesmo que [a-z] [[:digit:]] é o mesmo que [0-9] [[:alnum:]] é o mesmo que [0-9a-zA-Z] [[:space:]] casa com qualquer quantidade de espaços

Page 101: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

grep

O grep basicamente faz buscas. Mais precisamente: grep palavra file retorna todas as linhas do arquivo file que contenham palavra

Outro jeito de usar o grep é atraves de pipe (lembram dos pipes?).

Por exemplo: ls | grep palavra

Lista todos os arquivos que contenham palavra em seu nome. Ou seja, a entrada do grep é uma lista de arquivos (gerada pelo ls) que será filtrada, sendo impressas somente as linhas que contenham palavra.

Page 102: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

>cat file filebig bad bug bigger boogy

"." significa "qualquer e apenas um caracter". Para significar strings arbitrárias utilizamos "*".Intervalo numerico: ls oi[0-9].txt

Page 103: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

sed

Exemplo 1: >cat file O gato preto foi caçado por um cachorro marrom. >sed -e 's/preto/branco/g' file O gato branco foi caçado por um cachorro marrom.

Page 104: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

FunçõesFunções são blocos de comandos que podem ser definidos para uso posterior em qualquer parte do código. sintaxe de uma função:funcao() { comando1 comando2 ...}A função funcionará como um simples comando próprio. Você executa a função em qualquer lugar do script shell, e os comandos 1, 2 e outros serão executados. A flexibilidade das funções permite facilitar a vida do programador, e organizar

Page 105: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Shellzin GráficoXdialog --title "Exemplo número 2!" --stdout --yesno \"Neste exemplo, vamos ver o que você quer fazer. Você deseja continuar com o programa?" \0 0if [ $? = "0" ]; thenecho "Que bom! Você continuou o programa! Parabéns!"elif [ $? = "1" ]; thenecho "Você saiu do programa..."fi

Page 106: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Shell com janelasXdialog --title "Exemplo número 1!" --center --stdout --yesno \"Isto é legal?" \0 0

http://aurelio.net/shell/dialog/

Page 107: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

mais janelas

Xdialog --title "Exemplo número 2!" --center --stdout --yesno \"Neste exemplo, vamos ver o que você quer fazer. Você deseja continuar com o programa?" \0 0

if [ $? = "0" ]; then echo "Que bom! Você continuou o programa! Parabéns!"elif [ $? = "1" ]; then echo "Você saiu do programa..."fi

Page 108: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

kdialog

#!/bin/bashkdialog --msgbox "Olá, tudo bem?"

kdialog --inputbox "Canal a gravar (ex: 12)" 10 60 "12" 2> /tmp/resposta.tmpcanal=`/tmp/resposta.tmp`

kdialog --passivepopup "Esta janela some sozinha depois de 6 segundos." 6 &

arquivo=`kdialog --getsavefilename "/home/kurumin/Desktop" \"*.txt |Arquivos de texto"

Page 109: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

mais janelas

Xdialog --title "Aviso" --center --stdout --msgbox \"Este programa é apenas um exemplo para você ver como o Xdialog \\nfunciona. Apropósito, se você praticar bastante pode criar \\nprogra mas incríveis e facilmente, que daria muito mais \\ntrabalho fazendo em outras linguagens." \0 0

Page 110: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

mais janelas

dialog --title "Exemplo de Menu" --center --stdout --menubox \"Qual sua distribuição Linux favorita?" \20 50 0 \1 "Slackware" \2 "Debian" \3 "Red Hat" \4 "Conectiva Linux" \5 "Eu tenho minha própria distribuição"

Page 111: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Xdialog --title "Exemplo de Menu" --center --stdout --menubox \"Qual sua distribuição Linux favorita?" \20 50 0 \1 "Slackware" \2 "Debian" \3 "Red Hat" \4 "Conectiva Linux" \5 "Eu tenho minha própria distribuição"

Page 112: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

#!/bin/bashkdialog --msgbox "Olá, tudo bem?"kdialog --inputbox "Canal a gravar (ex: 12)" 10 60 "12" 2> /tmp/resposta.tmpcanal=`/tmp/resposta.tmp`kdialog --passivepopup "Esta janela some sozinha depois de 6 segundos." 6 &arquivo=`kdialog --getsavefilename "/home/kurumin/Desktop" \"*.txt |Arquivos de texto"`

Page 113: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

exemplo

#!/bin/sh#Desenvolvido por Jefer Benedett Dorr ([email protected]) #script para configurar rede do meu note na pos da unipankdialog --title "Script Configurador para Rede Unipan" --passivepopup "Aguarde....... Configurando a rede" 3 #msg passiva no canto superior esquerdoclearifconfig eth0 downifconfig eth0 upecho "iniciando configuração"ifconfig eth0 192.168.90.117 netmask 255.255.255.0 upecho "adicionando rota"route add default gw 192.168.90.1#adicionar dns no resolvecho "adicionando dns no resolv.conf"echo "nameserver 192.168.90.1" >> /etc/resolv.conf echo "testando conexao..........."if ping -c 3 www.unipan.br

then echo "Conexão --------- OK "echo "Conexão Testada ;)"else echo "Bahh!! Conexão Falhou!"

fi

Page 114: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Sobre Shell

Papo de Botequim – Julio Neves - http://twiki.softwarelivre.org/TWikiBar

Shell Script: Porque programar tem que ser divertido – Aurélio Marinho Jargas - http://aurelio.net/shell/

Guia do Hardware – Carlos Morimotto - http://www.gdhpress.com.br/ferramentas/leia/index.php?p=cap4-1

http://lcnsqr.byethost9.com/?sec=lpic&exam=102&node=13

Page 115: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;
Page 116: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Livros

Page 117: serviços de redes 1 (24hrs) Instalação e · desmontagem de dispositivos; Comandos para gerenciamento de redes, contas, arquivos, processos e permissões; Agendamento de Tarefas;

Filmes

Piratas do

Vale do SilícioRevolution OS

The code

Linux