http://www.zago.eti.br/script/python.txt FAQ com mensagens e dicas sobre scripts ou pequenos trechos de programas utilizando a linguagem python, veja também o FAQ sobre a linguagem Python em: http://www.zago.eti.br/linguag/python.txt Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ******************************************************** ******************************************************** De:  Jorge Godoy Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br) ¿Variables que retorna o IP da máquina? Data:  Sat, 8 May 2004 09:01:48 -0300 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 08 May 2004 01:11, Carlos wrote: > #!/usr/bin/perl -w > use strict; > use IO::Socket; > use Sys::Hostname; > my $name = hostname(); > my $ip = inet_ntoa(scalar gethostbyname($name)); > printf("$ip\n"); > > > O programa acima sempre retornara o endereco ip da maquina , > estando ele associado ao hostname. O que nem sempre é verdade... Geralmente esta técnica só retorna o IP desejado se você solicitar o IP de um endereço cadastrado, e.g., no Dyndns ou outro serviço de DNS dinâmico. Claro, para servidores ou máquinas com IP fixo isso também não é preciso... Se o intuito, entretanto, era obter o IP para montar o firewall do iptables, a técnica usada está errada e ele não é necessário. O que eu uso em alguns lugares para obter o IP de hosts com DNS dinâmico é o seguinte: ===================================================================== #!/usr/bin/python -tt import socket server = ('www.uol.com.br', 80) def getIPAddress():      sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)      sock.connect(server)      addr,port = sock.getsockname()      return addr print getIPAddress() ===================================================================== E ele obtém, desta maneira, o endereço IP da interface usada para estabelecer a conexão, ou seja, a que vai para a Internet (a menos que você execute isto dentro da rede de servidores do UOL, caso no qual você pode trocar o endereço dali por outro :-)) [godoy@wintermute clientes]$ python find_ip.py 200.138.98.109 [godoy@wintermute clientes]$ ifconfig ppp0 ppp0      Encapsulamento do Link: Protocolo Ponto-a-Ponto           inet end.: 200.138.98.109  P-a-P:200.101.129.41  Masc:255.255.255.255           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Métrica:1           pacotes RX:4730677 erros:4919297 descart.:0 sobrepos.:0 quadro:0           pacotes TX:3616256 erros:0 descart.:0 sobrepos.:0 portadora:0           colisões:0 txqueuelen:3           RX bytes:4119164435 (3928.3 Mb)  TX bytes:474000824 (452.0 Mb) [godoy@wintermute clientes]$ perl #!/usr/bin/perl -w use strict; use IO::Socket; use Sys::Hostname; my $name = hostname(); my $ip = inet_ntoa(scalar gethostbyname($name)); printf("$ip\n"); 10.0.0.1 [godoy@wintermute clientes]$ Sds, - -- Godoy.     -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) ******************************************************** ********************************************************