Apostila Automatizando Tarefas Com Shell Script II

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 10

4451

Linux System Administration

www.4linux.com.br

Contedo
Automatizando Tarefas com Shell Script II

5.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2 Utilizando a estrutura case . . . . . . . . . . . . . . . . . . . . . . . . .

5.3 Utilizando a estrutura while . . . . . . . . . . . . . . . . . . . . . . . .

5.4 Utilizando a estrutura for . . . . . . . . . . . . . . . . . . . . . . . . . .

5.5 Transformar Shell Script em binrio . . . . . . . . . . . . . . . . . . . . .

Automatizando Tarefas com Shell


Script II
5.1 Introduo Terica
Tarefas administrativas so, muitas vezes, longas e repetitivas. Podemos automatizar esses procedimentos atravs de scripts. Como exemplo podemos utilizar o
"case"para comandos de fluxo, tal como o if, mas enquanto if testa expresses no
exatas, o "case"vai agir de acordo com resultados exatos.
Temos o "while"para testa continuamente uma expresso, at que ela se torne falsa,
e ainda contamos com o lao "for"que vai substituindo uma varivel por um valor,e
vai executando os comandos que so pedidos.

5.2 Utilizando a estrutura case


Outra estrutura bastante til quando vrios if precisam ser declarados a estrutura
case.

case <valor> in <padro1>) comandos ;; <padro2>) comandos ;; <padro3>)


comandos ;; *) comandos ;; esac

5.2 Utilizando a estrutura case

4Linux www.4linux.com.br

Exemplo 1: Executar comandos dependendo do usurio digitado.

# !/ bin / bash

2
3

clear

echo " Digite um nome de usu rio "

read Usuario

case $Usuario in

aluno )

clear ; ls / etc ; cal ; date

;;

10

root )

11

clear ; whoami

12

;;

13

*)

14

clear

15

echo $Usuario n o existe

16

;;

17

esac

Exemplo 2: Script que exibe informaes do sistema.

# !/ bin / bash

clear

echo " Escolha uma op o para informa es da maquina ( Digite o numero


)"

echo "1- Horario do sistema "

echo "2- Tempo que o servidor esta ligado "

echo "3- Quantidade de usu rio logados "

echo "4- Sair "

read ESC

case $ESC in

10

1)

11

H=$( uptime | awk -F " " { print $1 } )

12

echo " Agora s o $H "

Pgina 4

Linux System Administration

4Linux www.4linux.com.br

;;

13

2)

14

T=$( uptime | awk -F " " { print $3 } )

15
16

echo "O sistema esta $T ligado "


;;

17

3)

18

U=$( uptime | awk -F " " { print $4 } )

19
20

echo " Existem $U atualmete logados "

21

;;
4)

22
23

echo " Bye ... "

24

;;

25

*)
echo " Op o invalida "

26

;;

27
28

5.3 Utilizando a estrutura while

esac

5.3 Utilizando a estrutura while


Quando repeties so necessrias podemos utilizar estruturas de looping como
while e for.

1
2
3

while [< express o > ]; do


comandos
done

Exemplo 1: Verificar se um site esta no ar.

# !/ bin / bash

clear

echo " Digite o endere o de um site "

Linux System Administration

Pgina 5

5.4 Utilizando a estrutura for

read SITE

while ping - c1 $SITE > / dev / null 2 >&1

do

echo "O site $SITE est no ar . "

done

4Linux www.4linux.com.br

Exemplo 2: Cria quantos arquivos voc indicar com uma determinada extenso.

# !/ bin / sh

clear

echo " Digite o nome do arquivo "

read ARQ

clear

echo " Digite a extens o do arquivo "

read EXT

clear

echo " Digite o numero de arquivos criados "

10

read NUM

11

i =1

12

while [ $i - le $NUM ]

13

do

14

touch

15

i= expr $i + 1

16

$ARQ$i . $EXT

done

5.4 Utilizando a estrutura for


O for pode ser utilizado efetuar um looping no estilo do while ou para processar
uma lista.

for VARIAVEL in < lista > ; do

Pgina 6

Linux System Administration

4Linux www.4linux.com.br

comandos com a VARIAVEL

2
3

5.4 Utilizando a estrutura for

done

Exemplo 1: Compactar todos os arquivos do diretrio atual.

# !/ bin / bash

for i in ls -1
do

tar - cvzf $i . tar . gz $i

done

Exemplo 2: Apaga todos os arquivos de uma determinada extenso.

# !/ bin / bash

clear

echo " Digite a extens o dos arquivos que voc quer apagar "

read ARQ

for i in *. $ARQ ; do

rm $i

done

Exemplo de Loop
Vamos criar um script que far uma verificao de quais mquinas esto ativas na
rede, para isso usaremos o comando ping.

ping 192.168.200.254

Usaremos algumas opes do comando ping para que ele no entre num loop, como
acontece por padro, e espere nossa interao para interrompe-lo:

Linux System Administration

Pgina 7

5.5 Transformar Shell Script em binrio

4Linux www.4linux.com.br

# ping -c 2 -w 2 192.168.200.1

Iremos agora elaborar o shell script hostup.sh

1
2
3

# !/ bin / bash
for IP in $ ( seq 1 15) ; do
ping -c 2 -w 2 192.168.200. $IP > / dev / null &&

echo " 192.168.200. $IP - UP " ||

echo " 192.168.200. $IP - DOWN "

done

D permisso de execuo ao script e execute-o para test-lo:

# cd / sbin

# chmod u + x hostup . sh

# hostup . sh

Programar em shell script uma arte, e como na arte, em shell o limite a sua
imaginao. Para se aprofundar nesse assunto:

http://jneves.wordpress.com/ http://aurelio.net

5.5 Transformar Shell Script em binrio


Obtenha o arquivo compactado no site usando o comando wget:

Pgina 8

Linux System Administration

4Linux www.4linux.com.br

5.5 Transformar Shell Script em binrio

# wget -c http :// www . datsi . fi . upm . es /~ frosal / sources / shc -3.8.6. tgz

Descompacte o arquivo:

# tar - xvzf shc -3.8.6. tgz

Copie o binrio o shc para /usr/local/bin

# cp shc -3.8.6/ shc / usr / local / bin /

Compile seu shell script usando o comando:

# shc -v -r -f script

Opes de linha de comando:


-v: Modo verbose (mostra o que esta fazendo);
-r: Gera um binrio compatvel com mais de um sistema;
-f: Opo para o compilador buscar o arquivo;
Copie o arquivo binrio para /bin (assim todos os usurios tero acesso)

# cp script . x / bin / script

Acerte as permisses do arquivo para que todos os usurios tenham acesso.

Linux System Administration

Pgina 9

5.5 Transformar Shell Script em binrio

4Linux www.4linux.com.br

# chmod 755 / bin / script

Acesse o sistema com um usuario comum e digite o nome do script

Pgina 10

Linux System Administration

Você também pode gostar