[python-brasil] mudar endereço ip com python

1,017 views
Skip to first unread message

@maltzsama

unread,
Feb 26, 2010, 4:24:53 PM2/26/10
to python...@yahoogrupos.com.br
Olá a todos,

Estou fazendo algumas testes com python há algum tempo, tentando substituir
quase em absoluto o shell-script por python e até o momento eu venho tendo
um resultado satisfatório.
Mas me surgiu essa duvida. Há como eu trocar o endereço IP de minha maquina
através do python?
Sei que é possivel eu fazer assim:

import os
os.system("ifconfig eth0 down")
os.system(ifconfig eth0 192.168.0.10 up")

ou ainda

import subprocess
subprocess.call(['ifconfig', 'eth0', 'down'])
subprocess.call(['ifconfig', 'eth0', '192.168.0.10', 'up'])

Mas achei essa solução um gatilho tão grande. Cheguei a encontrar esse
tutorial<http://bytes.com/topic/python/answers/701522-how-set-local-ip-address-using-python>mas
é usando a biblioteca WMI do Windows e eu gostaria de fazê-lo para
linux.
Talvez o sockets resolva meu problema, ainda estou pesquisando sobre mas
talvez eu esteja enganado também.
Se alguém puder esclarecer minha dúvida ficarei agradecido.


Demetrius Albuquerque
Linux & SO www.maltzsama.wordpress.com
do Contra Rock http://www.estacaodorock.com/v2/?p=13&blog_name=docontra


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Christian S. Perone

unread,
Feb 28, 2010, 8:44:55 PM2/28/10
to python...@yahoogrupos.com.br
Demetrius,
dê uma olhada em [1] "Replacing os.system()", onde fala sobre o uso do
Popen.
Outra coisa, vi que você está separando manualmente os tokens do comando
(parâmetros), para isto você deve usar o shlex.split() [2].

[1] http://docs.python.org/library/subprocess.html#replacing-os-system
[2] http://docs.python.org/library/shlex.html#shlex.split

Espero ter ajudado.

2010/2/28 Pedro Werneck <pjwe...@gmail.com>

> 2010/2/26 @maltzsama <cau...@gmail.com>


> >
> >
> >
> > Olá a todos,
> >
> > Estou fazendo algumas testes com python há algum tempo, tentando
> substituir
> > quase em absoluto o shell-script por python e até o momento eu venho
> tendo
> > um resultado satisfatório.
> > Mas me surgiu essa duvida. Há como eu trocar o endereço IP de minha
> maquina
> > através do python?
> > Sei que é possivel eu fazer assim:
> >
> > import os
> > os.system("ifconfig eth0 down")
> > os.system(ifconfig eth0 192.168.0.10 up")
> >
> > ou ainda
> >
> > import subprocess
> > subprocess.call(['ifconfig', 'eth0', 'down'])
> > subprocess.call(['ifconfig', 'eth0', '192.168.0.10', 'up'])
> >
> > Mas achei essa solução um gatilho tão grande.
>
>

> Essa é a solução correta se você está usando apenas para substituir
> shell-script. Não tenta complicar o que é simples. A filosofia Unix é
> essa mesmo, de manter tudo em pequenos comandos/executáveis que são
> facilmente acessados. Há muitas aplicações bem sofisticadas que na
> verdade são implementadas dessa forma. Essa idéia de bibliotecas para
> fazer tudo e manipular tudo não é sempre a melhor idéia.
> ---
> Pedro Werneck


>
>
> ------------------------------------
>
> ,-----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia: |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> | E se você é usuário do BOL lembre-se de cadastrar o |
> | e-mail do grupo na lista branca do seu sistema anti-spam. |
> `-----------------------------------------------------------´Links do
> Yahoo! Grupos
>
>
>


--
"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big
joke on me."
http://pyevolve.sourceforge.net/wordpress/

Fábio Cerqueira

unread,
Mar 1, 2010, 7:29:35 AM3/1/10
to python...@yahoogrupos.com.br
Através de socket(AF_NETLINK)  você consegue se comunicar com o
Kernel. Veja o código-fonte do ifconfig que pode te ajudar.

2010/2/28 Christian S. Perone <christia...@gmail.com>

> > ,----------------------------------------------------------.


> > | Antes de enviar um e-mail para o grupo leia: |
> > | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> > | E se você é usuário do BOL lembre-se de cadastrar o |
> > | e-mail do grupo na lista branca do seu sistema anti-spam. |

> > `----------------------------------------------------------´Links do


> > Yahoo! Grupos
> >
> >
> >
>
> --
> "Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big
> joke on me."
> http://pyevolve.sourceforge.net/wordpress/
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>


--
Fábio Cerqueira
Acens - Mentes em Desenvolvimento
Laboratório de Redes de Comunicação e Segurança da Informação - LARCES

Pedro Werneck

unread,
Feb 28, 2010, 7:23:12 PM2/28/10
to python...@yahoogrupos.com.br
2010/2/26 @maltzsama <cau...@gmail.com>

>
>
>
> Olá a todos,
>
> Estou fazendo algumas testes com python há algum tempo, tentando substituir
> quase em absoluto o shell-script por python e até o momento eu venho tendo
> um resultado satisfatório.
> Mas me surgiu essa duvida. Há como eu trocar o endereço IP de minha maquina
> através do python?
> Sei que é possivel eu fazer assim:
>
> import os
> os.system("ifconfig eth0 down")
> os.system(ifconfig eth0 192.168.0.10 up")
>
> ou ainda
>
> import subprocess
> subprocess.call(['ifconfig', 'eth0', 'down'])
> subprocess.call(['ifconfig', 'eth0', '192.168.0.10', 'up'])
>
> Mas achei essa solução um gatilho tão grande.

Essa é a solução correta se você está usando apenas para substituir
shell-script. Não tenta complicar o que é simples. A filosofia Unix é
essa mesmo, de manter tudo em pequenos comandos/executáveis que são
facilmente acessados. Há muitas aplicações bem sofisticadas que na
verdade são implementadas dessa forma. Essa idéia de bibliotecas para
fazer tudo e manipular tudo não é sempre a melhor idéia.
---
Pedro Werneck

Uilton Dutra

unread,
Feb 28, 2010, 10:51:50 AM2/28/10
to python...@yahoogrupos.com.br
Não conheço biblioteca para Python que permite mudar o IP no Linux, as
bibliotecas disponíveis apenas mostram informações sobre uma interface. A
maneira mais fácil é executar externamente o ifconfig, mas se você realmente
quer mudar via código, o caminho é fazer com chamadas ioctl. Dá uma olhada
no código do ifconfig.c do pacote net-tools.

Abraços,

Uilton Dutra
http://www.uilton.com

2010/2/26 @maltzsama <cau...@gmail.com>

Reply all
Reply to author
Forward
0 new messages