Download - Programação Avançada Scripts para Linux
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