Recentemente, enquanto resolvia um problema de conexão, esta questão surgiu. O sistema OpenVOS estava se conectando a um servidor público que enfrentava a Internet. O administrador do servidor fez uma simples pergunta: "Qual é o seu endereço IP? O sistema OpenVOS tem um endereço IP de uma das faixas privadas da Internet definidas pela RFC 1918, chamada de 192.168.0.1. Este endereço privado é traduzido por um dispositivo NAT para um endereço público, uma vez que ele deixa a Internet privada e vai para a Internet. O administrador precisava conhecer o endereço público. O administrador do sistema OpenVOS não tinha idéia e havia uma confusão para encontrar um administrador de rede que pudesse nos dizer.
Há qualquer número de sites da Internet que você pode conectar que lhe dirá qual é seu endereço IP MAS todos eles usam HTTP e o OpenVOS não tem um navegador da Web que possa ser usado para se conectar a esses sites.
Para ter certeza de que não serei colocado na mesma situação novamente, escrevi a seguinte macro de comando usando stcp_calls. Ela pode ser usada para fazer uma conexão a um site e exibir o texto da página web raiz do site. A exibição é uma lixeira hex-ascii dos dados retornados, não é bonita, mas é legível. Há algumas outras limitações também. Primeiro, nem todos os sites vão funcionar. Muitos sites exigem que o navegador siga um link na página raiz para realmente obter o endereço IP, algo que o navegador faz automaticamente, mas meu script não vai fazer. Ainda assim, encontrei alguns sites que funcionam com o script, verifique os comentários no script. Eu sugiro que você execute a macro em um processo iniciado.
A segunda limitação se deve à forma como o dispositivo NAT traduz os endereços IP. Alguns dispositivos mudarão todo o tráfego de saída para que ele tenha o mesmo endereço de origem, outros dispositivos terão um conjunto de endereços IP que eles usam para o endereço IP de origem, selecionando um endereço específico com base em um algoritmo interno. Tudo o que posso sugerir é executar a macro várias vezes e ver o que você obtém. Todos os endereços devem estar na mesma sub-rede, mas eu não posso prever qual será essa sub-rede.
& find_my_ip_address começa aqui
&
& Versão 1.00 10-12-06
& Versão 1.01 10-12-08 adicionou outro site à lista
& [email protected]
&
& Este roteiro se conecta a um site e recupera a página raiz. Muitos sites
e que exibam seu endereço IP exigem que o navegador siga um link no
e página raiz para exibir seu endereço IP. Estes sites não funcionarão com este
e roteiro. Eu testei os seguintes sites e eles funcionam atualmente (embora
e eu não faço promessas para o futuro).
&
& A saída é exibida em um formato hex-dump/ascii. Não é fácil de ler, mas
e você deve ser capaz de identificar o endereço IP. Eu sugiro que você execute o
e roteiro como um processo iniciado e depois pesquisar a saída.
&
& NOTAS DE SERVIDORES
& ------ -----
& findmyip.com busca por "é:"
& whatismyipaddress.com último conjunto de bytes não-nulos no último buffer
& www.ip-adress.com busca por "is:" e sim, é um d em um endereço
& checkip.dyndns.org último conjunto de bytes não nulos no último buffer
&
& Este software é fornecido "COMO ESTÁ", SEM QUALQUER GARANTIA OU QUALQUER GARANTIA
E SUPORTE DE QUALQUER TIPO. O AUTOR DESCUBRA ESPECIFICAMENTE QUALQUER GARANTIA IMPLÍCITA
& DE COMERCIABILIDADE OU ADEQUAÇÃO PARA QUALQUER FINALIDADE ESPECÍFICA. Esta isenção de responsabilidade
& aplica-se, apesar de quaisquer representações verbais de qualquer tipo fornecidas pelo
e autor ou qualquer outra pessoa.
&
&begin_parâmetros_de_parâmetros
SERVIDOR servidor:string,req
&parâmetros_de_envio
&
&if (process_type) = 'batch' &then &do
&echo no_input_lines no_command_lines no_macro_lines
& fim
&
&attach_input
stcp_calls
soquete
buf_edit
0 47 45 54 20 2F 20 48 54 54 50 2F 31 2E 30 0a 0a 0a
connect -name &SERVER& -port 80
enviar -len 16
&label AGAIN
..start_logging (process_dir)>recv
recv -len 1000
..stop_logging
&set_string LINE (conteúdo (process_dir)>recv 1)
..display_line &LINE&
&if (índice (conteúdo (process_dir)>recv 1) ' 0 bytes') > 0 &then &goto QUIT
&if (índice (conteúdo (process_dir)>recv 1) 'bytes') = 0 &then &goto QUIT
buf_dump
&goto AGAIN
&label QUIT
desista
&
& find_my_ip_address termina aqui
|