Страница 1 из 1

Скрипт для получения IP хоста

Добавлено: 2008-03-14 11:54:05
ALF
Всем доброго дня, есть небольшая проблемка.
Нужно получать обновления с ftp ресурса(ftp.что-то.com). Открыл я 21 порт на этот адрес. И все бы ничего, но этот ftp постоянно "перезжает" с адреса на адрес. Если в ipfw вместо адреса указывать само имя хоста он не всегда его "опрделяет"...
cannot resolve hostname бла-бла-бла....
Пришла мысль написать скриптик который бы в /etc/hosts добавлял актуальную запись с IP этого хоста и заменял бы старую
Теперь собтвено вопрос) Как бы это реализовать.. в написании скриптов я не силен... буду признателен за любого рода помощь

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-15 10:42:50
Alex Keda
может лучше отдельный скрипт который будет 1 правилло менять в файрволле?

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-15 10:46:58
ALF
Немного не понял, можно по подробней?

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-15 13:39:10
dikens3
ALF писал(а):Немного не понял, можно по подробней?
У тебя есть строка, к примеру под номером 100:

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

100 allow tcp from any to ftp.что-то.com 21
Тогда написать скрипт, который будет удалять правило с номером 100 и добавлять новое (актуальное)

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

#!/bin/sh

ipfw delete 100
ipfw add 100 allow tcp from any to ftp.что-то.com 21
И всё это дело закинуть в cron с нужным интервалом.

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-16 3:21:25
ALF
dikens3 писал(а):
ALF писал(а):Немного не понял, можно по подробней?
У тебя есть строка, к примеру под номером 100:

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

100 allow tcp from any to ftp.что-то.com 21
Тогда написать скрипт, который будет удалять правило с номером 100 и добавлять новое (актуальное)

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

#!/bin/sh

ipfw delete 100
ipfw add 100 allow tcp from any to ftp.что-то.com 21
И всё это дело закинуть в cron с нужным интервалом.
В том то и весь подвох... оно не всегда "определяет" имя хоста!
Если имя есть в /etc/hosts то все ОК.... а так....

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-16 5:27:02
BlackCat
Намек был на то, что удабнее играться не строкой в /etc/hosts, а правилом файрвола.
По поводу написания скриптов, посмотрите здесь http://forum.lissyara.su/viewforum.php?f=32, мануал тут http://www.lissyara.su/?id=1075

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-16 6:08:56
polvo
Хм, а вообще в чем необходимость фильтровать исходящий ftp трафик?)

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-16 12:10:38
dikens3
В том то и весь подвох... оно не всегда "определяет" имя хоста!
В чём причина этого не всегда?

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-16 20:24:40
ALF
BlackCat писал(а):По поводу написания скриптов, посмотрите здесь http://forum.lissyara.su/viewforum.php?f=32, мануал тут http://www.lissyara.su/?id=1075
Cпс... буду капать
dikens3 писал(а):
В том то и весь подвох... оно не всегда "определяет" имя хоста!
В чём причина этого не всегда?
Если бы я только знал :roll:

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-18 12:26:23
manefesto
пару раз писал правила и понял.
По сути правило это всего навсего shell скрипт.
Советую выдергивать ip шник используя возможности awk и sed.
Аля

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

$host_ip=`host ftp.<что-то там> | awk '{print $2}'`
ipfw add 100 allow tcp from any to $host_ip 21
PS: Срочно мне надо дать права модера :-)

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-18 12:39:23
manefesto
на вот...смотри

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

$host_ip=`ping -c 1 ftp.bla-bla.com | head -n 2 | tail -n 1 | awk '{print $4}' | sed "s/\://"`
ipfw add 100 allow tcp from any to $host_ip 21

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-18 13:44:35
manefesto
я не понял, вопрос решен или нет ?

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 10:54:55
ALF
manefesto писал(а):на вот...смотри

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

$host_ip=`ping -c 1 ftp.bla-bla.com | head -n 2 | tail -n 1 | awk '{print $4}' | sed "s/\://"`
ipfw add 100 allow tcp from any to $host_ip 21
Спасибо огромное помощь, но вот есть косяк((

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

=193.17.46.7: not found
выдает такую строку(( чего оно так :?

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 13:32:32
schizoid
да нормуль все вроде...

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

# ping -c 1 ya.ru | head -n 2  | tail -n 1 | awk '{print $4}' | sed "s/\://"
213.180.204.8

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 13:54:26
polvo
omg, зачем через ping? ))

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 13:58:42
ALF
schizoid писал(а):да нормуль все вроде...

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

# ping -c 1 ya.ru | head -n 2  | tail -n 1 | awk '{print $4}' | sed "s/\://"
213.180.204.8
Так вот и у меня работает если просто команду ввести... а если скриптом получаеться лажа...
например с тем же ya.ru

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

#/data/temp/1.sh
=213.180.204.8: not found

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 13:59:39
Alex Keda
а ты из sh выполни =)))

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 14:02:40
ALF
ААААААААА!!!!!!!!!! :twisted: Я плуг)) Разобрался.... Спасибо всем большое очень помогли! :P

P.S. А сможет кто для меня расчехлить вот это: awk '{print $4}' и это: sed "s/\://" :oops:

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 14:14:50
zg
ALF писал(а):А сможет кто для меня расчехлить вот это: awk '{print $4}' и это: sed "s/\://" :oops:
1 - вывод четвёртого по счёту столбца из стандартного потока ввода, разделяемого по пробелам
2 - удаление первого двоеточия в строке

Re: Скрипт для получения IP хоста

Добавлено: 2008-03-24 14:33:01
ALF
zg писал(а):
ALF писал(а):А сможет кто для меня расчехлить вот это: awk '{print $4}' и это: sed "s/\://" :oops:
1 - вывод четвёртого по счёту столбца из стандартного потока ввода, разделяемого по пробелам
2 - удаление первого двоеточия в строке
Спасибо большое