Category: python

Out 19 2009

Mudança de base numérica com Python.

Boa noite,

Algum tempo já venho pensando em mudar o método utilizado pelo Little URL, já que o mesmo atualmente cria strings aleatórias para cada registro, porém seria melhor criar os endereços utilizando uma base (16,32,64) pois assim não corresse o risco do gerador entrar em loop já que cada endereço registrado possui um número único no banco de dados. (Chave primária). Hoje uma amiga perguntou como ela faria um programa para mudar a base de um número manualmente, aproveitei que ela me lembrou disso e resolvi fazer.

def convert(decimal,newBase,str,letters):
        if decimal >= newBase:
                x = decimal % newBase
                y = decimal / newBase  
                str = letters[x] + str
                if y < newBase:
                        str = letters[y] + str
                return convert(y,newBase,str,letters)  
        else:
                if len(str) == 0:
                        str = letters[decimal] + str
                return str
let = "0123456789ABCDEF"
print convert(17,16,"",let)

A váriavel let, são os valores utilizados na criação da base. Por exemplo ao se utilizar uma base binária, os valores deveriam ser 01 e assim consecutivamente.

Espero que goste,
Matheus

Out 06 2009

Twitter Sync e Fun Text novos plugins para o Emesene.

Boa noite,

Alguns dias atrás resolvi fazer um plugin para o Emesene de sincronização das mensagens de status com as mensagens do perfil. Então pesquisei um pouco e fiz de uma maneira simples.

Navegando pelo fórum do Emesene certo dia um usuário deu a sugestão para implementarmos um Plugin onde apartir de um certo comando como /flip ou /l33t ele transformaria as mensagens, o primeiro faz a mensagem ficar de cabeça pra baixo e da direita pra esquerda já o segundo é a transformação de letras por números.

Espero que gostem,
Matheus

Set 02 2009

Conectar ao SSH pelo Python.

Boa noite,

Ontem comentei sobre a utilização do pexpect para executar comandos e se comunicar com eles. Hoje brinquei um pouco mais com essa biblioteca e fiz um exemplo de conexão e enviar o comando ‘uptime’ para o servidor. Só um exemplo simples, mas acredito que já da uma idéia de como você pode mecher com essa biblioteca.

Primeiramente você deve ter a biblioteca pexpect instalada. Você pode obte-la em http://sourceforge.net/projects/pexpect/ e para instalar você deve digitar

$ sudo python setup.py install

Após a mesma instalada você já pode se divertir. O pequeno script que fiz para testar foi o seguinte:

import pexpect

class SSH():
def connect(self):
x = True
sshConnection = pexpect.spawn(‘ssh -l matheus -p 22 192.168.0.254′)
sshConnection.expect(‘matheus@192.168.0.254\’s password:’)
sshConnection.sendline(‘senha’)
while True:
print sshConnection.readline();
if x is True:
sshConnection.sendline(‘uptime’)
x = False
sshConnection.readline();

s = SSH()
s.connect()

Bom, o código é auto-explicativo e caso você tenha algum problema para entender, não hesite em entrar em contato,
Matheus Bratfisch

PS: Caso tenha algum problema execute o seguinte comando: $ sudo apt-get install python-dev

PS2: Maldita indentação. Caso você deseje baixe aqui o Conectar ao SSH pelo Python

Set 02 2009

Executando comandos no terminal e passando parametros em Python.

Boa noite,

Estou a alguns dias procurando um método para apartir do Python conseguir executar programas na shell e passar parametros (“responder” as perguntas desse programa.). Por exemplo, você deseja fazer um script em python que automaticamente se autentica em um servidor ssh, ou seja inicia o SSH e passa a senha para o mesmo automaticamente. Após alguns tempos de pesquisa, descobri o subprocess.Popen, porém o mesmo não conseguia matar minha necessidade, quando se tratava de inserir as senhas as mesmas não iam. Li no gossamer-threads que o problema é devido ao SSH não aceitar conteudo para senhas provenientes do stdin, somente do pty então me parece que é necessário algum tipo de simulação. No mesmo tópico deste forum recomendam a utilização da biblioteca pexpect e com a mesma obtive sucesso, não tive tempo de brincar o suficiente com ela, mas do recado básico e inicial ela deu conta.

Quem sabe em alguns dias não posto alguns exemplos, mas fica aqui a dica para você que possui problema semelhante.

Att,
Matheus