ssh и динамический ip

    Есть у меня дома 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, буду благодарен =)
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 16

      +21
      Есть такая хорошая и удобная вещь как DynDNS. Большинство модемов поддерживают данный сервис, а если нет то есть клиентское приложение.
        0
        Мне тоже кажется, что с помощью DynDNS или No-Ip будет намного удобней
          0
          Зарегистрировался сейчас, настроил вроде всё как надо, установил клиента — а толку что-то нуль… — сервер не найден.
            0
            а 22 порт с модема на комп не желаете пробросить?
              0
              А как вы думаете, для ssh я какой порт пробрасывал?
                0
                Попробуйте настроить через модем, у меня тоже через клиент не получилось, а при настройке модема все заработало на ура
                  0
                  тогда поднимите пппое на компьютере что бы исключить проблемы с пробросом
                    0
                    не было никаких проблем. Усё. Удалил друную софтину, настроил на модеме. Спасибо.
                      0
                      Пожалуйста :)
                0
                Ну там тоже не совсем сразу записи обновляет:)
              0
              Идею на IThappens взяли? :)
              ithappens.ru/story/267 (изначально, она, вроде, на баше была)
                0
                Вспоминал про неё во время процесса =)
                +2
                Можно ради веселья подключить jabber бота, который будет говорить ip)
                0
                Решал аналогичную проблему. Правда, в моем случае с домашней машиной было все еще хуже: IP-адрес у нее был за NAT-ом. Проблема решилась созданием простого туннеля через OpenVPN, где в качестве OpenVPN-сервера выступил офисный шлюз, а в качестве OpenVPN-клиента — домашний компьютер. По руководству все можно настроить за 5 минут. Возможно, в особо тяжелых случаях и на нестабильных каналах потребуется использовать TCP-соединение и опцию keepalive.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое