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