helio.loureiro.eng.br
  • Home
  • Unix
  • Linux
  • Blog
  • Python
  • Programação
  • Tudo
  • Suécia
  1. You are here:  
  2. Home
  3. Python
  4. Monitorando interfaces no Linux via netlink usando Python

Os artigos mais lidos de 2025

  • Configurando o grafana alloy pra monitorar VMs
  • Configurando traefik com ssh
  • Configurando o teclado Keychron C3 no Linux
  • Parâmetros de compilação pra Go!
  • Script pra verificar e atualizar os certificados dos domínios com letsencrypt

Limpando a tela com Python

Details
Written by: Helio Loureiro
Category: Python
Published: September 28, 2010
Hits: 17349

Pode ser preciosismo meu, mas resolvi criar uma chamada em alguns programas para limpar a tela, ao estilo do comando clear.

Não imaginava por quais veredas inóspitas eu iria entrar...

Primeiramente devo dizer que é fácil fazer uma chamada pra um subshell e utilizar o próprio aplicativo clear.


#! /usr/bin/python

from os import system
system("clear")

Funciona,  mas é tosco.  E eu queria uma solução "unix like", daquelas que a gente tem orgulho de contar na mesa do bar, no encontro com amigos nerds (afinal serão os únicos que entenderão o que você estava dizendo, o que não significa que vão compartilhar o mesmo sentimento de orgulho que você estava sentindo).

Então mergulhei na biblioteca ncurses.  Tentei algumas linhas simples, chamando um método curses.clear().


#! /usr/bin/python
import curses

scrn = curses.initscr()
scrn.clear()
curses.endwin()

Realmente funcionou, mas de uma forma indesejada, não restaurando as propriedades do terminal (você perde a alimentação do cursor, que só é restaurada após utililizar o comando reset).

Então resolvi utilizar o módulo termios para salvar o estado do terminal, e recuperar o mesmo após o método curses.clear().  Ficou um pouco maior do que eu imaginava, mas funcionou muito bem.  Agora posso fazer meus scripts Python limparem a tela de uma forma muito elegante.


#! /usr/bin/python

import curses
import termios
from sys import stdin

fd = stdin.fileno()
scr = termios.tcgetattr(fd)

scrn = curses.initscr()
scrn.clear()

termios.tcsetattr(fd, termios.TCSADRAIN, scr)

Começando 2009 com SMS

Details
Written by: Helio Loureiro
Category: Python
Published: January 02, 2009
Hits: 7085

Ano novo, vida nova. Mudanças no trabalho (de área) e um pouco de férias. Até dia 18, estarei aproveitando meus dias em ócio, um pouco produtivo, espero eu, uma vez que vendi minha prancha de surf e estou esperando uma outra (maior)ficar pronta.

Durante o natal e ano novo, recebi vários SMSs desejando felicidades, etc. Com meu ócio criativo à 1000, resolvi voltar um pouco aos velhos códigos de Python, com Tkinter. Criei uma interface para envio de SMSs em massa, tipo SPAM.

Terrível tentação aos SPAMMERs e melancólico sofrimento para nossos celulares. Mas felizmente utilizei uma interface interna da Ericsson para isso, então somente funcionários poderão utilizar. Fora isso, não pretendo liberar o código externamente. Talvez dentro da empresa, onde já ganhei um relógio com frequencímetro cardíaco devido às minhas contribuições em 2008.

Falando do código, muito simples, utilizando Entry(), Text(), Label() e Button(). Na verdade a facilidade é graças ao Tk mesmo. As fontes das letras anteriormente eram bem *toscas*, assim como o widget, que era todo cinza. Consegui melhorar a aparência do mesmo com o código abaixo:


root = Tk() 
root.option_add("*Font", "arial") 
root.option_add("*Label.Font", "helvetica 9 bold") 
root.option_add("*Background", "gray") 
root.option_add("*selectBackground", "light gray") 
root.option_add("*selectForeground", "black") 
root.config(background="gray")

Estou tentando melhorar o código adicionando um splash screen no início, e outra tela durante o envio, uma vez que ao apertar o botão para enviar, a tela "congela" e só volta ao final. Infelizmente já notei que o Tk é limitado nesse ponto... vamos ver onde chego.

Também depois de *lançamento*, descobri que somente 154 caractéres são enviados. Preciso ver se coloco algum contador pra evitar cortes. Se você recebeu uma mensagem truncada, já sabe: fui eu :-)

E feliz 2009!

Python fun!

Details
Written by: Helio Loureiro
Category: Python
Published: December 02, 2008
Hits: 7370

Autenticador PPPoE para Speedy

Details
Written by: Helio Loureiro
Category: Python
Published: May 19, 2005
Hits: 19268

 Esse é o script usado para autenticar automaticamente no Speedy da Telefonica (região de São Paulo). Evita que usuários residenciais, como eu, precisem estar em frente à máquina, permitindo que a mesma volte à rede sem intervenção humana.

Instruções para Linux:
    Copie o arquivo com o nome "0speedy_auth" dentro de "/etc/ppp/ip-up.d/". Isso fará com que seja executada no início de cada inicialização ppp. Para tornar o pppoe também automática, inclua a seguinte entrada em "/etc/inittab":
S1:2345:respawn:/usr/sbin/pppd nodetach call speedy
    O nome "speedy" é relativo ao arquivo que deve existir em "/etc/ppp/peers/speedy" com o conteúdo semelhante à:


pty "pppoe -I eth0 -T 80 -m 1452"
noauth
defaultroute
user "This email address is being protected from spambots. You need JavaScript enabled to view it."
usepeerdns

Instruções para FreeBSD:
    Inclua o nome do arquivo (e o caminho) em "/etc/ppp/ppp.linkup".


 

 
# $Id: speedy_auth.py,v 1.1 2003/09/12 02:57:40 helio Exp $
# COPYRIGHT
#
#    Copyright © 2003 Helio Loureiro
#
#    Permission to use, copy, modify, distribute, and sell this software
#    for any purpose is hereby granted without fee, provided that the above
#    copyright notice appear in all copies and that both that copyright
#    notice and this permission notice appear in supporting documentation.
#    No representations are made about the suitability of this software for
#    any purpose. It is provided "as is" without express or implied
#    warranty.


import os, sys, time
from socket import *

print "Autenticador para speedy $Revision: 1.1 $ - versão super alfa \
\nEscrito em Python (multiplataforma :-) \
\nEnvie suas sugestões e críticas para \"helio AT loureiro DT eng DT br\""

hostfake="www.google.com.br"
web=80
host='200.171.222.97'
port=86

adsl = socket(AF_INET, SOCK_STREAM)
adsl.connect((hostfake, web))
adsl.send("""GET /intl/pt/ HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Python
Keep-Alive: 300
Connection: keep-alive\n\n
""")

adsl.recv(1024)
adsl.close()

adsl = socket(AF_INET, SOCK_STREAM)
adsl.connect((host, port))
adsl.send("""GET /speedywebapp/html/redirect.html?CPURL=http://www.google.com/intl/pt/ HTTP/1.1
Host: 200.171.222.97:86
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Python
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/pla
in;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: pt-br
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 08 Sep 2003 12:21:49 GMT
If-None-Match: "12bc10-4d1-7e901140"\n\n
""")
adsl.recv(1024)
adsl.close()

adsl = socket(AF_INET, SOCK_STREAM)
adsl.connect((host, port))
adsl.send("""GET /speedywebapp/servlet/logon?CPURL=http://www.google.com/intl/pt/&opcion=internet HTTP/1.1
Host: 200.171.222.97:86
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Python
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/pla
in;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Accept-Language: pt-br
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Connection: keep-alive
Referer: http://200.171.222.97:86/speedywebapp/servlet/popupView?CPURL=http://www.google.com/intl/pt/\n\n
""")
adsl.recv(1024)
adsl.close()

print "Conexão estabelecida.  Divirta-se!!!"

Page 9 of 9

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Estatísticas

  • Users 2
  • Articles 482
  • Articles View Hits 3489872

Imagem aleatória