• Nenhum resultado encontrado

Programação Avançada Scripts para Linux

N/A
N/A
Protected

Academic year: 2023

Share "Programação Avançada Scripts para Linux"

Copied!
40
0
0

Texto

(1)

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

No Linux

Popen não retorna nada, apenas executa o

comando

(30)

Módulo os

No Linux

Execução do comando com o system acontece

em subshell, mas aparece no interpretador

(31)

Módulo os

No Linux

Mas, atenção! O system retorna zero e não o texto que aparece na

tela

(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 [email protected] ‘ls –lisa’

Com o python:

os.system(‘ssh [email protected] \’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 [email protected] ‘ls -lisa’ >> temp

ssh [email protected] ‘ls –lisa’ >> temp

Referências

Documentos relacionados

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron & Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Esta degradação, é de difícil avaliação, por isso para cada caverna realiza-se uma análise da capacidade de carga, ou seja, o quanto uma área pode agüentar as

Os objetivos do presente trabalho foram (i) caracterizar genótipos de milho quanto à resistência a virose mosaico-comum causada pelo SCMV e (ii) introgredir a resistência

 Ao clicar no botão Congurar Apresentação de Slides , uma caixa de diálogo será aberta (gura 59), para que congurações sejam estabelecidas, tais como tipo

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

apresentar documentação falsa para o certame, ensejar o retardamento da execução de seu objeto, não mantiver a proposta, não celebrar o contrato ou instrumento equivalente, falhar