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
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
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
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
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
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 comand ssh ls –lisa Com o python: os.system(ssh \ls -lisa > temp\ )
SSH Exemplo...
SSH Para fazer uma conexão ssh via python libssh2.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 ls -lisa >> temp ssh ls –lisa >> temp