Очень часто приходится работать в разных местах, поэтому не редко приходится узнавать свой внешний IP адрес с помощью всяких whatismyip.com
Очень хотелось что-то простое, быстрое, и для консоли. Подумав и погуглив, я написал совсем простой скрипт на php с использованием socket`ов
#!/usr/bin/env php
<?php
$socket = stream_socket_server(«tcp://0.0.0.0:23″, $errno, $errstr);
if (!$socket) {
die(«$errstr ($errno)\n»);
}
while ($connect = stream_socket_accept($socket, -1)) {
$ip=stream_socket_get_name($connect,true);
$ip=explode(«:»,$ip);
fwrite($connect, $ip[0]);
fclose($connect);
}
?>
Теперь сервер, при коннекте telnet клиента на стандартный 23 порт, выдает ему его же внешний IP. Просто, изящно, но тупо.
На написание (да чего уж там, основную часть я выдрал в наглую) меня вдохновила статья на хабре
http://habrahabr.ru/company/ifree/blog/209864/
Стоит отметить, что для не stream_socket, а обычных, выдается ошибка »Transport endpoint is not connected in», которую я так и не смог побороть.
0 Комментарии。