Programação Avançada

Propaganda
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
 Shell, bash, awk, python
 Python fornece uma linguagem simples para o
desenvolvimento de scripts
Introdução
 Módulos com métodos interessantes para scripts
 Módulo sys

Módulo provê acesso a variáveis/funções usadas ou mantidas
pelo interpretador
 Módulo os

Módulo provê interfaces para funcionalidades do sistema
operacional
Módulo sys
 sys.argv
 Variável do tipo lista contendo a lista de argumentos
passados pela linha de comando para o script Python


argv[0]  nome do script
Demais itens são entradas do script
Entradas para o script
Módulo sys
 sys.path
 Mostra o valor da variável de ambiente pythonpath

A pythonpath é utilizada para buscar os módulos que estão
sendo incluídos no código
Exemplo de sys.path
 Módulo estacionamento2 foi desenvolvido em sala
 Salvo em C:\\natalia
Python começa a
buscar módulos aqui
também
Modificações só
valem na
execução do seu
script
Módulo sys
 sys.platform
 Retorna o nome da plataforma em uso
Módulo sys
 sys.stdin, sys.stdout e sys.stderr
 Objetos do tipo file que correspondem a entrada, saída e
erro padrões do interpretador
 sys.__stdin__, sys.__stdout__ e sys.__stderr__
 Objetos contendo o valor original de
stdin, stderr e stdout
Módulo os
 os.name
 Nome para identificação do sistema operacional

Melhor usar o sys.platform
 os.environ
 Mostra um dicionário com o conteúdo de todas as
variáveis de ambiente
Módulo os
Módulo os
 os.listdir(path)
 Retorna uma lista contendo todas as entradas de um
diretório especificado por path
 Não inclui . e ..
Módulo os
 os.chdir(path)
 Muda o diretório corrente
para path
 os.getcwd()
 Retorna a string
representando o diretório
corrente
Módulo os
 os.chown(path, uid, gid)
 Muda o dono de path, através da identificação do
usuário uid e do respectivo grupo gid
 Disponível apenas no Unix
Módulo os
 os.chmod(path, mode)
 Muda o modo de proteção (leitura, escrita e execução)
do path. O mode deve ser colocado no modo numérico.
 Disponível apenas no Unix
Módulo os
Módulo os
 os.link(source, link_name)
 Cria um hard link apontando para source com o nome
link_name
 Disponível apenas no Unix
Módulo os
Módulo os
 os.mkdir(path[, mode])
 Cria um diretório com nome path e permissão mode
(permissão opcional – padrão 0777)
 Modo representado em octal

Número iniciado por zero
 Gera uma exceção do tipo OSError se o diretório já existe
Módulo os
Módulo os
 os.remove(path)
 Remove o arquivo path
 Se path for um diretório, gera exceção OSError
 No Windows, se o arquivo estiver em uso, também gera
uma exceção
Módulo os
 os.rename(src, dst)
 Renomeia o arquivo ou diretório src para o nome dst
 os.rmdir(path)
 Remove o diretório path
 Só funciona se o diretório estiver vazio
Módulo os
 os.fork()
 Cria um processo filho
 Exemplos: test_fork3.py a test_fork6.py
Módulo os
 os.execv(path, args)
 Executa o programa especificado em path

Substitui o processo atual
 Args é uma lista ou uma tupla

O primeiro argumento deve ser sempre o nome do programa
executado
 Exemplos: test_fork7.py
Módulo os
Módulo os
 os.kill(pid, sig)
 Envia o sinal sig para o processo pid
 os.nice(increment)
 Incrementa increment na prioridade de um processo
 Retorna o novo valor da nova prioridade
 Disponível apenas no Unix
Módulo os
 os.popen(comando)
 Executa o comando, que deve ser representado como
uma string
 os.system(comando)
 Executa o comando em um subshell
Módulo os
 No Windows:
Módulo os
 No Linux
Popen não retorna nada,
apenas executa o comando
Módulo os
 No Linux
Execução do comando com o
system acontece em subshell,
mas aparece no interpretador
Módulo os
 No Linux
Mas, atenção! O system
retorna zero e não o texto que
aparece na tela
Módulo os
 os.wait()
 Espera que processo filho seja finalizado
 Retorna o pid do processo filho e a indicação de status de
saída
 Disponível apenas em Unix
 os.waitpid(pid, options)
 No Unix:


Espera que o processo filho com pid seja terminado
Retorna o pid do processo filho e a indicação de status de saída
 No Windows:
 Espera que o processo filho com pid seja terminado
 Retorna uma tupla contendo pid, o status de saída do processo
shiftado de 8 bits
Módulo os
 os.curdir
 Constante (string) contendo a indicação para diretório atual
 No Windows e no POSIX, vale ‘.’
 os.pardir
 Constante (string) contendo a indicação de diretório pai
 No Windows e no POSIX vale ‘..’
 os.sep
 Caractere usado pelo sistema operacional para separar componentes
em um nome de diretório
 Vale '/' no POXIS e '\\‘ para o Windows
 Para parsear o nome do diretório use :

os.path.split()
 Para juntar nomes formando um diretório, use:

os.path.join()
SSH
 Ao fazer scripts, muitas vezes será importante se logar
em diferentes máquinas
 Uso do ssh


Conexão segura entre duas máquinas
Exige autenticação
 Nome e senha
 Certificados
 Evita ter que colocar nome e senha a cada vez que se faz a
comunicação

Gerar certificado no cliente e armazenar no servidor

Cliente é o nó que inicia a conexão
SSH
 Exemplo de uso:
 ssh user@hostname comand

ssh [email protected] ‘ls –lisa’
 Com o python:
 os.system(‘ssh [email protected] \’ls -lisa > temp\’
’)
SSH
 Exemplo
...
SSH
 Para fazer uma conexão ssh via python
 http://www.no-ack.org/2010/11/python-bindings-forlibssh2.html
Exercícios
 Faça um script que crie um diretório com 10 arquivos
com nomes aleatórios
 Faça um script que mude o nome de todos os arquivos
de um diretório, colocando um texto escolhido pelo
usuário na frente do nome do arquivo.
 Ex:


Antes: fsdasdasd
Depois: texto-fsdasdasd
Exercícios
 Faça um script que monitore os dados de sua placa de rede de 5 em 5
segundos e guarde em um arquivo especificado pelo usuário. O usuário
deve especificar também o tempo total de teste.
 Faça um script que leia um arquivo de configuração e chame um
programa de acordo com as entradas lidas.
 Exemplo:
 Arquivo de configuração:
 Nome=natalia,root
 Dispositivo=maquina.lab.uff.br
 Comando = ls -lisa
 Saída=temp
 Comando gerado e executado pelo seu script
 ssh [email protected] ‘ls -lisa’ >> temp
 ssh [email protected] ‘ls –lisa’ >> temp
Download