Sunteți pe pagina 1din 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