-----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 :-))
[EMAIL PROTECTED] clientes]$ python find_ip.py
200.138.98.109
[EMAIL PROTECTED] 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)
[EMAIL PROTECTED] 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
[EMAIL PROTECTED] clientes]$
Sds,
- --
Godoy. <[EMAIL PROTECTED]>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAnMwxEzC+baSjBiURAp7mAJ9hEjiCGv9zj2Iw98R3MMIKgUVV5gCfTzUv
u8E9e7+kzxW7HCl6mfgBdo0=
=Xn7l
-----END PGP SIGNATURE-----
---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html