1 / 39

Programação Avançada Scripts para Linux

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

uyen
Download Presentation

Programação Avançada Scripts para Linux

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. Entradas para o script

  6. 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

  7. 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

  8. Módulo sys • sys.platform • Retorna o nome da plataforma em uso

  9. 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 

  10. 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

  11. Módulo os

  12. Módulo os • os.listdir(path) • Retorna uma lista contendo todas as entradas de um diretório especificado por path • Não inclui . e ..

  13. Módulo os • os.chdir(path) • Muda o diretório corrente para path • os.getcwd() • Retorna a string representando o diretório corrente

  14. 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

  15. 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

  16. Módulo os

  17. 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

  18. Módulo os

  19. 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

  20. Módulo os

  21. 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

  22. 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

  23. Módulo os • os.fork() • Cria um processo filho • Exemplos: test_fork3.py a test_fork6.py

  24. 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

  25. Módulo os

  26. 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

  27. 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

  28. Módulo os • No Windows:

  29. Módulo os Popen não retorna nada, apenas executa o comando • No Linux

  30. Módulo os Execução do comando com o system acontece em subshell, mas aparece no interpretador • No Linux

  31. Módulo os Mas, atenção! O system retorna zero e não o texto que aparece na tela • No Linux

  32. 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

  33. 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()

  34. 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

  35. SSH • Exemplo de uso: • ssh user@hostname comand • ssh natalia@maquina.lab.uff.br ‘ls –lisa’ • Com o python: • os.system(‘ssh natalia@maquina.lab.uff \’ls -lisa > temp\’ ’)

  36. SSH • Exemplo ...

  37. SSH • Para fazer uma conexão ssh via python • http://www.no-ack.org/2010/11/python-bindings-for-libssh2.html

  38. 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

  39. 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 natalia@maquina.lab.uff.br ‘ls -lisa’ >> temp • ssh root@maquina.lab.uff.br ‘ls –lisa’ >> temp

More Related