programação avançada scripts para linux

39
Programação Avançada Scripts para Linux Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012

Upload: uyen

Post on 06-Feb-2016

60 views

Category:

Documents


0 download

DESCRIPTION

Programação Avançada Scripts para Linux. Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012. Introdução. Scripts permitem Executar sequências de comandos Desenvolver testes Monitorar dados Etc; Podem ser feitos em diversas linguagens - PowerPoint PPT Presentation

TRANSCRIPT

Programao Avanada

Programao AvanadaScripts para LinuxProf. Natalia Castro FernandesMestrado em Telecomunicaes UFF2 semestre/2012IntroduoScripts permitemExecutar sequncias de comandosDesenvolver testesMonitorar dadosEtc;Podem ser feitos em diversas linguagensShell, bash, awk, python

Python fornece uma linguagem simples para o desenvolvimento de scripts

IntroduoMdulos com mtodos interessantes para scriptsMdulo sys Mdulo prov acesso a variveis/funes usadas ou mantidas pelo interpretadorMdulo osMdulo prov interfaces para funcionalidades do sistema operacionalMdulo syssys.argvVarivel do tipo lista contendo a lista de argumentos passados pela linha de comando para o script Pythonargv[0] nome do scriptDemais itens so entradas do scriptEntradas para o script

Mdulo syssys.pathMostra o valor da varivel de ambiente pythonpathA pythonpath utilizada para buscar os mdulos que esto sendo includos no cdigo

Exemplo de sys.pathMdulo estacionamento2 foi desenvolvido em salaSalvo em C:\\natalia

Python comea a buscar mdulos aqui tambmModificaes s valem na execuo do seu scriptMdulo syssys.platformRetorna o nome da plataforma em uso

Mdulo syssys.stdin, sys.stdout e sys.stderrObjetos do tipo file que correspondem a entrada, sada e erro padres do interpretadorsys.__stdin__, sys.__stdout__ e sys.__stderr__Objetos contendo o valor original de stdin,stderrestdout

Mdulo osos.nameNome para identificao do sistema operacionalMelhor usar o sys.platform

os.environMostra um dicionrio com o contedo de todas as variveis de ambiente

Mdulo os

Mdulo osos.listdir(path)Retorna uma lista contendo todas as entradas de um diretrio especificado por pathNo inclui . e ..

Mdulo osos.chdir(path)Muda o diretrio corrente para path

os.getcwd()Retorna a string representando o diretrio corrente

Mdulo osos.chown(path,uid,gid)Muda o dono de path, atravs da identificao do usurio uid e do respectivo grupo gidDisponvel apenas no Unix

Mdulo osos.chmod(path,mode)Muda o modo de proteo (leitura, escrita e execuo) do path. O mode deve ser colocado no modo numrico. Disponvel apenas no UnixMdulo os

Mdulo osos.link(source,link_name)Cria um hard link apontando para source com o nome link_nameDisponvel apenas no UnixMdulo os

Mdulo os

Mdulo osos.mkdir(path[,mode])Cria um diretrio com nome path e permisso mode (permisso opcional padro 0777)Modo representado em octalNmero iniciado por zeroGera uma exceo do tipo OSError se o diretrio j existeMdulo os

Mdulo osos.remove(path)Remove o arquivo pathSe path for um diretrio, gera exceo OSErrorNo Windows, se o arquivo estiver em uso, tambm gera uma exceo

Mdulo osos.rename(src,dst)Renomeia o arquivo ou diretrio src para o nome dstos.rmdir(path)Remove o diretrio pathS funciona se o diretrio estiver vazio

Mdulo osos.fork()Cria um processo filho

Exemplos: test_fork3.py a test_fork6.pyMdulo osos.execv(path,args)Executa o programa especificado em pathSubstitui o processo atualArgs uma lista ou uma tupla O primeiro argumento deve ser sempre o nome do programa executado

Exemplos: test_fork7.pyMdulo os

Mdulo osos.kill(pid,sig)Envia o sinal sig para o processo pidos.nice(increment)Incrementa increment na prioridade de um processoRetorna o novo valor da nova prioridadeDisponvel apenas no UnixMdulo osos.popen(comando)Executa o comando, que deve ser representado como uma stringos.system(comando)Executa o comando em um subshellMdulo osNo Windows:

Mdulo osNo Linux

Popen no retorna nada, apenas executa o comandoMdulo osNo Linux

Execuo do comando com o system acontece em subshell, mas aparece no interpretadorMdulo osNo Linux

Mas, ateno! O system retorna zero e no o texto que aparece na telaMdulo osos.wait()Espera que processo filho seja finalizadoRetorna o pid do processo filho e a indicao de status de sadaDisponvel apenas em Unixos.waitpid(pid,options)No Unix:Espera que o processo filho com pid seja terminadoRetorna o pid do processo filho e a indicao de status de sada

No Windows:Espera que o processo filho com pid seja terminadoRetorna uma tupla contendo pid, o status de sada do processo shiftado de 8 bits

Mdulo osos.curdirConstante (string) contendo a indicao para diretrio atualNo Windows e no POSIX, vale .os.pardirConstante (string) contendo a indicao de diretrio paiNo Windows e no POSIX vale ..os.sepCaractere usado pelo sistema operacional para separar componentes em um nome de diretrioVale '/' no POXIS e '\\ para o WindowsPara parsear o nome do diretrio use :os.path.split()Para juntar nomes formando um diretrio, use:os.path.join()SSHAo fazer scripts, muitas vezes ser importante se logar em diferentes mquinasUso do sshConexo segura entre duas mquinasExige autenticaoNome e senhaCertificadosEvita ter que colocar nome e senha a cada vez que se faz a comunicaoGerar certificado no cliente e armazenar no servidorCliente o n que inicia a conexoSSHExemplo de uso:ssh user@hostname comandssh [email protected] ls lisa

Com o python:os.system(ssh [email protected] \ls -lisa > temp\ )

SSHExemplo

...SSH Para fazer uma conexo ssh via pythonhttp://www.no-ack.org/2010/11/python-bindings-for-libssh2.htmlExercciosFaa um script que crie um diretrio com 10 arquivos com nomes aleatrios

Faa um script que mude o nome de todos os arquivos de um diretrio, colocando um texto escolhido pelo usurio na frente do nome do arquivo.Ex: Antes: fsdasdasdDepois: texto-fsdasdasdExercciosFaa um script que monitore os dados de sua placa de rede de 5 em 5 segundos e guarde em um arquivo especificado pelo usurio. O usurio deve especificar tambm o tempo total de teste.

Faa um script que leia um arquivo de configurao e chame um programa de acordo com as entradas lidas.Exemplo: Arquivo de configurao:Nome=natalia,rootDispositivo=maquina.lab.uff.brComando = ls -lisaSada=tempComando gerado e executado pelo seu scriptssh [email protected] ls -lisa >> tempssh [email protected] ls lisa >> temp