Решено: работать на ssh-сервере с динамическим ip

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

У меня дома стоит компьютер (debian). На нем динамически меняющийся ip (меняется раз в несколько часов). Я хочу иметь возможность соединяться с данным компьютером по ssh с любой машины. Я написал программу на баш (программа уже работает)!

Код: Выделить всё

#!/bin/bash

cd /home/moilogin/prg
#сюда надо перейти
    wget -q -O servdom.html http://2ip.ru/

    ftp -n << EOF
    open ftp.narod.ru
    user moisite moiparol
    delete servdom.html
    put ./servdom.html
    quit
    EOF

wait 10m
#отсюда надо сделать переход

по моей задумке, каждые 10 минут на моем сайте moisite.narod.ru будет создаваться страница servdom.html, считывая которую, я буду знать текущий ip домашнего компьютера. Вопросы:
1. Можно ли как нибудь избежать использование сервиса 2ip.ru? Как узнать свой ip адрес без обращений к внешним сервисам?
2. Какой оператор в баш используется заместо goto? Не могу найти ничего подобного в командах.
3. Правильна ли моя идея и сам скрипт? Нельзя ли его сделать лучше?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение SLEDopit »

azsx писал(а):
19.08.2010 10:13
Какой оператор в баш используется заместо goto? Не могу найти ничего подобного в командах.
В данном случае можно использовать бесконечный цикл. А еще лучше раз в 10 минут запускать задание из крона.
azsx писал(а):
19.08.2010 10:13
Правильна ли моя идея и сам скрипт? Нельзя ли его сделать лучше?
Нет. Можно. Просто надо смотреть в сторону сервисов наподобие dyndns.org. В debian для него даже есть клиент в репозитории (так и называется dyndns).
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

В данном случае можно использовать бесконечный цикл.

что то он у меня не получается :(
выдает ошибку "неожиданный конец файла". Борюсь пока.
dyndns.org - во первых для сайтов, а во вторых какой смысл использовать внешний сервер (сервис)? Пока мой домашний компьютер будет работать - моя схема будет вполне работоспособна. А с dyndns я не смогу ssh доступ настроить.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 10:13
2. Какой оператор в баш используется заместо goto? Не могу найти ничего подобного в командах.

Нет такого. Используйте нормальные ветвление и циклы.

azsx писал(а):
19.08.2010 10:13
3. Правильна ли моя идея и сам скрипт? Нельзя ли его сделать лучше?

Удобнее использовать DynDNS. На вашем компе крутится специальный демон (таких куча в любом дистрибутиве), который постоянно связывается с сервером DynDNS и автоматически обновляет IP, связанный с вашей учётной записью. Вам же достаточно связываться с SSH не по IP, а по доменному имени, вида блабла.dyndns.com.

Upd: опередили

azsx писал(а):
19.08.2010 10:28
А с dyndns я не смогу ssh доступ настроить.

Это ещё почему?

azsx писал(а):
19.08.2010 10:28
dyndns.org - во первых для сайтов

Не только.

azsx писал(а):
19.08.2010 10:28
а во вторых какой смысл использовать внешний сервер (сервис)?

Сейчас вы используете целых два - narod.ru и 2ip
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Сейчас вы используете целых два - narod.ru и 2ip

Об этом я не подумал :)
Спасибо, вечером попробую - и отпишусь о результате.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение SLEDopit »

azsx писал(а):
19.08.2010 10:28
что то он у меня не получается

Код: Выделить всё

#!/bin/bash
cd /home/moilogin/prg
while true
do
    wget -q -O servdom.html http://2ip.ru/
    ftp -n << EOF
    open ftp.narod.ru
    user moisite moiparol
    delete servdom.html
    put ./servdom.html
    quit
EOF
sleep 10m
done
зы да и вместо полной странички 2ip.ru я бы просто в текстовый файл сбрасывал айпишник как нибудь так:

Код: Выделить всё

wget -qO ip.txt 2ip.ru | egrep -m 1 -o "([0-9]+\.){3}[0-9]+"
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение t.t »

SLEDopit писал(а):
19.08.2010 11:10
azsx писал(а):
19.08.2010 10:28
что то он у меня не получается

Код: Выделить всё

#!/bin/bash
cd /home/moilogin/prg
while true
do
    wget -q -O servdom.html http://2ip.ru/
    ftp -n << EOF
    open ftp.narod.ru
    user moisite moiparol
    delete servdom.html
    put ./servdom.html
    quit
    EOF
sleep 10m
done
зы да и вместо полной странички 2ip.ru я бы просто в текстовый файл сбрасывал айпишник как нибудь так:

Код: Выделить всё

wget -qO ip.txt 2ip.ru | egrep -m 1 -o "([0-9]+\.){3}[0-9]+"
Мне всё же не совсем понятно, зачем чинить костыли, если автору уже предложили (Вы же в том числе) готовое решение. (: Или из спортивного интереса?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение SLEDopit »

t.t писал(а):
19.08.2010 11:51
Или из спортивного интереса?
Ага. Лично мне, например, всегда интересно, почему та или иная вещь у меня не работает, даже если необходимость в ней уже отпала. Вдруг у топикстартера есть такой же интерес (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

SLEDopit - на любые мои попытки включить цикл (перепробовал while, until, for) везде всплывает ошибка

Код: Выделить всё

/home/moilogin/prg/opr.sh: line 15: ошибка синтаксиса: неожиданный конец файла

это ошибка на предложенный вами вариант скрипта.
Вот как с ней бороться - я не знаю. Все остальное в скрипте работает
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение SLEDopit »

azsx писал(а):
19.08.2010 12:36
Но у меня скрипт не работает!

Код: Выделить всё

$ cat 1
#!/bin/bash
while true
do
    ftp -n << EOF
    quit
EOF
echo OK
sleep 1
done
 $ ./1
OK
^C

 $ cat 1
#!/bin/bash
while true
do
    ftp -n << EOF
    quit
    EOF
echo OK
sleep 1
done
 $ ./1
./1: line 9: warning: here-document at line 4 delimited by end-of-file (wanted `EOF')
./1: line 10: syntax error: unexpected end of file
Оно? Перед EOF отступ надо же убрать.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Оно? Перед EOF отступ надо же убрать.

честное слово, никогда бы не подумал, что в баш скриптах нельзя использовать форматирование с помощью пробелов. Большое вам спасибо.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 12:51
честное слово, никогда бы не подумал, что в баш скриптах нельзя использовать форматирование с помощью пробелов.

Можно и даже нужно, но не везде.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Можно и даже нужно, но не везде.

скрипт не работал, потому как стояли пробелы перед eof. Таким образом делаю вывод, если в баш скриптах использовать пробелы, то будут всплывать непонятные ошибки.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 12:55
скрипт не работал, потому как стояли пробелы перед eof. Таким образом делаю вывод, если в баш скриптах использовать пробелы, то будут всплывать непонятные ошибки.

Нет, надо просто внимательно читать мануалы. Строка должна совпадать с приведённой после "<<" полностью. К примеру, такой вариант вполне корректен:

Код: Выделить всё

cat << "   qwe"
asdfg
   qwe

А если не делать отступов, вы запутаетесь в своих скриптах.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Строка должна совпадать с приведённой после "<<" полностью.

ээээээээ
а дайте пожалуйста ссылку на описание по русски этой проблемы. А то я что то не понимаю, чего я не понимаю с отступами.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 13:02
А то я что то не понимаю, чего я не понимаю с отступами.

Вы не понимаете того, что строки после "...<<..." воспринимаются как есть. Если бы у них игнорировались начальные пробелы, то у вас бы не было возможности вывести эти пробелы.
Пример:

Код: Выделить всё

cat <<EOF
  bla
    bla
EOF
Выведет:

Код: Выделить всё

  bla
    bla

Т.е. все пробелы здесь воспринимаются "как есть", и если бы это было не так, у вас бы не было возможности добиться такого вывода.
Но если вам не нужны отступы в начале выходных строк, вы хотите использовать их просто как оформление, то есть другой синтаксис (обратите внимание на минус):

Код: Выделить всё

cat <<-EOF
        bla
        bla
        EOF
Выведет:(правда, здесь отступы нужно делать только табами, а не пробелами)

Всё это есть в man bash. Советую прочитать внимательно.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

вопрос из той же оперы про мой скрипт. Сайт http://smart-ip.net/tools/ports-scan ясно показывает:
Найдены открытые порты:
Порт Сервис Описание
22 ssh SSH Remote Login Protocol
в настройка модема virtual server:
Name Protocol WAN Port Server Host Port Server IP Address
SSH TCP 22 22 192.168.1.10
ssh запущен.
а зайти по ssh с помощью putty я не могу :(
что дальше делать даже не знаю...
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 19:37
а зайти по ssh с помощью putty я не могу :(

Как именно не можете? Что выдаётся?
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Как именно не можете? Что выдаётся?

wincsp выдает: Network error: Connection refused
putty выдает то же самое
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 19:47
wincsp выдает: Network error: Connection refused
putty выдает то же самое

Проблема на стороне компа, где вы запускаете putty. Я прекрасно вижу у вас ssh, и даже дохожу до ввода пароля.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Проблема на стороне компа, где вы запускаете putty.

сторона компа. winxp официальная - нетбук. Что удивительно, но этот же putty соединяется с другим сервером по ssh. А именно с моим компом не соединяется. И что делать?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

1) Вы подключаетесь по внешнему IP? 92.*.*.4?
2) Нетбук случайно не в той же локалке?
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

1 да
2 да
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

Когда вы пытаетесь подключиться по внешнему адресу, запрос направляется роутеру. А большинство "домашних" роутеров не транслирует порты "из локалки в локалку". Проброшенные порты видны только извне.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

А большинство "домашних" роутеров не транслирует порты "из локалки в локалку". Проброшенные порты видны только извне.

а нет ли случайно какой либо опции в роутере-модеме, которая включает и отключает эту трансляцию. Я слабо помню когда именно, но я твердо уверен, что я заходил по ssh с нетбука на комп. Только вот потом я енял настройки в модеме-роутере. И какие я менял настройки я уже не помню.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

azsx писал(а):
19.08.2010 20:12
Я слабо помню когда именно, но я твердо уверен, что я заходил по ssh с нетбука на комп.

Ну так по внутреннему адресу - без проблем.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение azsx »

Ну так по внутреннему адресу - без проблем.

да, большое вам пасибо, вы правы.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение sash-kan »

тут был упомянут роутер.
получается, носителем внешнего адреса является именно он?
вот на нём тогда и следует настраивать dyndns-клиента.
ведь машина за роутером не знает текущего адреса, соответственно, ей нечего рассказать dyndns-у.
(понятно, что можно распарсить вывод какого-нибудь show-me-my-ip-сервиса, но мы же пытаемся сократить количество телодвижений?).
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: работать на ssh-сервере с динамическим ip

Сообщение /dev/random »

sash-kan писал(а):
20.08.2010 10:35
ведь машина за роутером не знает текущего адреса, соответственно, ей нечего рассказать dyndns-у.

DynDNS-клиент имеет право не передавать свой IP в запросе на обновление, в этом случае сервер использует IP, с которого пришёл запрос.
Спасибо сказали: