Para quem precisa apenas se conectar em um servidor usando Python e mandar e receber comandos eis uma classe simples que fiz e uso para diversos projetos.

class UserSocket:
    """
    Classe de comunicacao

    Exemplo:
        UserSocket("10.13.97.81", 2100)
    """

    def __init__(self, host, port):
        """
        Construtor do driver de conexao
        """
        self.__host = host
        self.__port = port
        self.connect_server()

    def connect_server(self):
        """
        Realiza a conexao com o servidor
        """
        try:
            self.__soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
            self.__soc.connect((self.__host, self.__port))
        except Exception:
            return False
        return True

    def close_server(self):
        """
        Fecha a conexao com o servidor
        """
        try:
            self.__soc.close()
        except Exception:
            return False
        return True

    def receive_data(self):
        """
        Recebe os dados do buffer do servidor
        """
        data = ''
        chunk = ' '
        while (len(data) < 1) or (chunk != '\n'):
            chunk = self.__soc.recv(1)
            if chunk == '':
                raise RuntimeError, "socket connection broken"
            data = data + chunk
        return data

    def send_data(self, data):
        """
        Envia dados para o servidor
        """
        try:
            self.__soc.sendall(data)
        except Exception:
            return False
        return True

Usando …

>>> s = UserSocket("10.13.97.81", 2100)
>>> data = s.receive_data()
>>> s.send_data("COMANDO")

… você poderá se comunicar com qualquer servidor socket.

Se você hospeda seu próprio wordpress é interessante habilitar o ssl para criptografar seu sua comunicação com o servidor, do contrário todas as suas senhas e demais dados que você envia no ato da publicação de conteúdo estarão vulneráveis a sniffing e M-i-M attack. Veremos como fazer essa configuração de uma forma bem simples.

Estou presumindo aqui que o seu wordpress já está funcionando e configurado, com Mysql, Apache, etc.

Passo 1 - Instalar pacotes necessários, caso ainda não tenha instalado.

$ sudo aptitude install openssl ssl-cert

Passo 2 - Gerar a chave privada do servidor.

$ cd /etc/ssl

$ sudo openssl genrsa -out private/server.key 2048

$ sudo chmod 400 private/server.key

Passo 3 - Gerar a requisição de certificado auto assinado. (Para blogs profissionais contrate um certificado “oficial”, verisign, godaddy, etc.)

$ sudo openssl req -new -key private/server.key -out server.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: seu pais
State or Province Name (full name) [Some-State]: seu estado
Locality Name (eg, city) []: sua cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]: sua empresa
Organizational Unit Name (eg, section) []: seu departamento
Common Name (eg, YOUR name) []: *
Email Address []: seu e-mail

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Note que qualquer dos campos pode ser deixado em branco, basta digitar “.”, sem as aspas. Se você não tem vários IPs sobrando sugiro criar um certificado genérico (para todos os sites) usando no campo “Common name” um asterisco (*).

Passo 4 - Gerando o certificado

$ sudo openssl x509 -days 365 -req -in server.csr -signkey private/server.key -out certs/server.crt

Passo 5 - Configurando o site

Habilite o ssl

$ sudo a2enmod ssl

Crie um novo arquivo

$ cd /etc/apache2/sites-available

$ sudo vim wordpress-ssl

Coloque o conteúdo abaixo no arquivo

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName www.seusite.com.br
    DocumentRoot /var/www/seusite/
    Errorlog /var/log/apache2/site-error_log
    Customlog /var/log/apache2/site-access_log common
    AddDefaultCharset utf-8
    SSLEngine On
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

Habilite o site criado

$ sudo a2ensite wordpress-ssl

Reinicie o apache para habilitar as configurações

$ sudo /etc/init.d/apache2 force-reload

Pronto, agora é só testar seu site https://www.seusite.com.br. O interessante é que deste jeito você poderá criar vários sites ssl, com o mesmo IP, todavia não tem como usar certificados diferentes para cada site.

Primeiramente deixe-me explicar, imagino que você deve estar se perguntando, “Sendo assim eu sou burro?” ou “Você está me chamando de burro? Seu idiota!!!”, nada disso. Eu estava pensando, nessa semana, o que leva a pessoa a fazer um curso qualquer, seja de reciclagem ou de capacitação em uma determinada área, e percebi que muitas vezes eu mesmo me deparei em alguma sala de aula com alguém falando sobre um determinado tema e eu pouco prestando atenção ou essa pessoa pouco sabia sobre o tema ou tinha segurança sobre o assunto. Claro que há exceções, mas aí nos deparamos com outro problema, muitas vezes a turma em que você está não é, como vamos dizer, tão atenciosa quanto você e isso acaba fazendo com que o instrutor volte assunto, repita conceitos e isso lhe desistimula a continuar com sua atenção alí. Identificou-se com a cena???

Eu tenho o hábito de estudar através de livros, ou até mesmo através de PDFs!, e pude observar que tem sido muito mais proveitoso, econômico e satisfatório. Se seu objetivo é conhecimento, essa é a solução. Existe, como tudo na vida, seus contras, pois um “curso” feito dessa forma exige conhecimento prévio de bons livros, saber sites e referências para consulta e ter uma “base” boa sobre o tema que se deseja estudar, pois é fácil cairmos em livros mal escritos, conteúdo desatualizado ou pior, autores que entendem de administração escrevendo sobre informática (Alguém pode citar um?). Se seu objetivo é certificados (não confundir com certificações) para colocar no currículo, esse não é um bom caminho.

Felizmente, para o leitor desse blog, irei recomendar várias literaturas que poderão embasar consideravelmente seus estudos na área de informática, redes e programação ágil. Todos os livros recomendados aqui são de grande proveito se lidos COMBINADOS! Nenhuma literatura é final e completa, portanto o hábito de consultar várias fontes é sempre bem vindo.

Leitura de base

Abaixo livros para embasar seu conhecimento. Nenhum profissional será bom o suficiente se não conhecer os princípios que solidificam os conhecimentos em informática.


Redes de Computadores - Andrew S. Tanenbaum


Shell Script Profissional - Aurelio Marinho Jargas


Sistemas Distribuídos: Conceitos e Projeto - George Coulouris


Introdução a Estruturas de Dados - Waldemar Celes


Fundamentos Matemáticos para a Ciência da Computação - Judith L. Gersting

Leitura em linux

Livros que descrevem o funcionamento do sistema operacional aberto mais popular que existe. Uma ótima base para entender o linux e seus componentes estão compilados nos livros abaixo.


Certificação Linux Lpi - Nível 1 Exames 101 e 102 - Steven Pritchard


Certificação Linux LPI: Nível 2 Exames 201 e 202 - Steven Pritchard


Manual Completo do Linux: Guia do Administrador - Evi Nemeth


Universidade Linux - Tadeu Carmona

Leitura em redes

Livros específicos para redes e interconexão de computadores, configuração de roteadores, firewalls e demias equipamentos em um ambiente interconectado.


Projeto de Interconexão de Redes - Matthew H. Birkner


Linux Iptables: Guia de Bolso - Grecor N. Purdy


Como Configurar Roteadores Cisco - Allan Leinwand

Leitura em programação

Livros que lhe ajudarão a pensar logicamente e com agilidade, o objetivo de programar é solucionar problemas da forma mais simples possível.


Programação Avançada em Linux - Gleicon Da Silveira Moraes


Profissional Linux Programando - Neil Matthew


Extreme Programming - Vinicius Manhaes Teles


UML Essencial - Grady Booch


Use a Cabeça HTML com CSS e XHTML - Eric Freeman


Use a Cabeça ! : Ajax - Brett Mclaughlin


Use a Cabeça SQL - Lynn Beighley

Bem, essa é uma lista inicial dos livros que já li e gostei, cada um tem seus fortes e fracos também, alguns a tradução não está legal, mas o conteúdo é interessante (principalmente os da série “Use a cabeça”), estou vendo outros livros interessantes que estou interessado em ler, assim que tiver uma opnião positiva sobre eles indico aqui também.

Quem tiver outra indicação pode sugerir nos comentários.

UPDATE: Estou pensando em manter o site, mas preciso reformular-lo completamente, haja tempo!!! Enfim, estarei mudando algumas coisas por aqui. Desejem-me sorte.

Já faz um tempo que mantenho este blog e tem sido muito gratificante, agradeço todos os comentários, contatos, agradecimentos, dúvidas que tenho recebido ao longo desse período, todavia meus novos projetos para 2009 estão começando e a ideia é crescer, portanto não cabe mais nos meus projetos manter um blog pessoal. O Jornal do Jerimum irá morrer, mas não meu espirito blogueiro, o blog irá permanecer como parte do site da minha empresa a ADG Soluções (http://www.adgsolucoes.com.br), o site lá também irá mudar e passará a ter mais interatividade, projetos Open Source que desenvolvi nesse ano e também projetos comerciais, será um salto qualitativo muito grante.

Para todos que leram os arquivos e foram ajudados de alguma forma meus sinceros agradecimentos.

Peço que todos aguardem com anciedade o novo formato do site e por ora não deixem de visitar: http://www.adgsolucoes.com.br

Allan Garcia

Estou à procura de uma pessoa com perfil dinâmico, motivada e responsável interessada em realizar estágio na área de desenvolvimento para web e web design. Atualmente tenho vário projetos se iniciando e muito trabalho para fazer, o selecionado irá vivenciar rotinas de atendimento a cliente, reuniões de negócios e prática de desenvolvimento para Internet e projeto de interfaces.

Exige-se:

  • Compromisso e responsabilidade com o estágio
  • Conhecimento de HTML (W3C) e tecnologias correlatas
  • Conhecimento de lógica de programação e saber desenvolver em alguma linguagem

Plus:

  • Conhecimento em Python
  • Conhecimento em Linux

Oferta-se:

  • Conhecimento e experiência na área
  • Bolsa-auxílio compatível com a experiência do candidato a partir do 2º mês
  • Possibilidade de contratação após o término do estágio

A priori irei dar preferência para candidatos localizados na região da grande Natal, porém não encontrando considerarei outros candidatos. A modalidade de trabalho proposta para o estágio é remoto com encontros diários presenciais e participação nas minhas rotinas profissionais com consultor de tecnologias em informática, desenvolvedor de sistemas e professor da universidade federal.

Ver:

Se você está interessado envie seu currículum no formado HTML contendo no assunto apenas a palavra ESTÁGIO para o e-mail allan.garcia@adgsolucoes.com.br. Currículum não enviado conforme as especificações solicitadas não serão considerados.

Leitura recomendada!!! O livro “Dive into Python” embora esteja em uma tradução um pouco duvidosa é excelente para quem deseja começar na linguagem de programação ágil Python, o livro aborda aspectos práticos e característicos da linguagem Python e trás uma abordagem bem diferente de se aprender uma linguagem de programação.

Este livro está sendo indicado usando o programa de afiliados do submarino, portanto se desejar adquirir este livro, faça-o clicando na imagem ao lado. :-D
Bons estudos para todos.

Outra indicação, na verdade sugerida por um dos leitores em um comentário é o livro “Aprendendo Python”, já dei uma foleada nele e parece ser didático e fácil de entender. Se alguém tiver mais comentários sobre esse livro favor postar.

Este tutorial visa apresentar uma abordagem rápida para a instalação de um servidor de nomes que irá resolver urls para endereços IP, esse artigo é um complemento ao artigo de instalação do Subversion/Trac e não objetiva a completa compreenção do funcionamento de um servidor de nomes, mas tão somente o resultado final que é seu funcionamento.

O sistema base para este tutorial é o Ubuntu 8.04 com todo o sistema do Subversion/Trac instalado (embora não seja necessário). Os comandos aqui apresentados irão funcionar primariamente no sistema Ubuntu embora sistemas “debian-like” muito provavelmente irão utilizar os mesmos comandos, todavia não há qualquer garantia que de este tutorial irá funcionar para qualquer outro sistema operacional.

Primeiramente vamos instalar os pacotes necessários ao funcionamento do servidor de nomes.

$ sudo aptitude install bind9

Aguardar a instalação e se tudo correr bem ir para o diretório /etc/bind Read more

Caros leitores, estou mudando hoje várias coisas no blog, portanto ele poderá ficar fora do ar algumas horas, se for o caso volte amanhã para ver as novidades!

Obrigado.

Neste tutorial veremos como configurar a conexão claro 3G no seu desktop Ubuntu 8.04 (Hardy). Embora eu tenha ficado extremamente irritado com os vendedores da Claro que se recusaram a deixar eu testar o modem no Linux alegando incompatibilidade e essas coisas, eu mesmo assim optei por essa opção de Internet, que tem sido minha atual forma de conexão à Internet, devido as suas enormes facilidades e relativa qualidade. É engraçado como pessoas leigas insistem em resistir a qualidade e superioridade dos sistemas UNIXlike e se contentam com a mesmice e subtecnologia oferecida pela Microsoft e seus parceiros, mas isso é outro assunto. Read more

Esta é a segunda edição deste tutorial, gostaria de acrescentar algumas coisas que os leitores tiveram dúvidas e corrigir outras, estou criando este tutorial porque acabei de reinstalar o meu sistema, agora Ubuntu 8.04 LTS, e pense numa trabalheira reinstalar tudo. :-D
Como uso o Ubuntu, irei usar o aptitude para instalar meus pacotes, ao menos para a maioria dos pacotes, a vantagem é ter o log de toda instalação e desinstalação dos pacotes em /var/log/aptitude*

Dica útil, desligue nas preferências do aptitude a instalação automática dos pacotes recomendados, geralmente eles são inúteis. Read more

Next Page →