Есть у меня дома adsl-модем вкупе с маршрутизатором. И есть желание иметь постоянный доступ к домашней машине по ssh, да вот незадача — у модема ip не статический, а даже совсем наоборот — динамический и узнать какой в текущий момент у него адрес. находясь за пределами дома — невозможно. Но только если заранее к этому не подготовиться =)

Вот вооружившись планом создать себе все возможности по получению ip-шника, я набросал небольшой скрипт, который при каждой загрузке системы узнаёт ip модема и выкладывает в файл на каком-либо фтп-сервере, а мне остаётся только посмотреть какой ip был присвоен модему при последней загрузке и подключиться через проброшенный порт к домашней машине =)

Для удобства, я разделил функционал на две части (сам скрипт и конфиг) и собрал всё это в маленький deb-пакет.

Код скрипта:

#!/bin/bash

### BEGIN INIT INFO
# Provides: get-ip
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Setting up daemon for detect IP on your system
### END INIT INFO

. /etc/get-ip.conf

if [ ${ftp_host} = "" ]; then
echo «Program is not configured! Host: $ftp_host»
exit 1;
fi

wget -qO /tmp/ip_tmp myip.ru && cat /tmp/ip_tmp | grep -e ".* " | sed «s///g» | sed «s/<\/TD><\/TR>//g» | sed «s/ //g» > $upload_file_name && rm /tmp/ip_tmp

#echo $upload_file_name

ftp -n $ftp_host <<EOF
user $ftp_name $ftp_pass
delete $upload_file_name
send $upload_file_name
bye
EOF

rm $upload_file_name

echo «IP changed»

Собственно в скрипте нет абсолютно ничего сложного, при установке пакета, этот скрипт будет добавлен в скрипты вызываемые при загрузке системы, хотя решение может показаться не совсем рациональным, ибо машина может работать и неделю и две, а модем за это время не раз успеет сменить ip, но меня этот вариант вполне устраивает на домашней машине. а если кому-то не понравиться — то можно легко поправить исходник, благо он доступен по этой ссылке вместе с уже собранным пакетом: get-ip.tar.gz

PS: После установки, необходимо отредатировать файл /etc/get-ip.conf для работы с вашим фтп. Если кто расскажет более действенный и менее костылеподобный способ получения своего IP, буду благодарен =)