Получение внешнего IP скриптом на BASH’е
Привожу BASH-скрипт получения своего внешнего IP
(использует сервис http://checkip.dyndns.org/dyndns.checkip.html).
wget -q http://checkip.dyndns.org/dyndns.checkip.html -O - | sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1 | cut -d':' -f2 | sed 's/^[ ]*//' -
Показать
Опишу работу скрипта.
С помощью кода
wget -q http://checkip.dyndns.org/dyndns.checkip.html -O -
скрипт получает строку вида
<html><head><title>Current IP Check</title></head><body<Current IP Address: 217.69.139.200</body></html>
на свой вывод, о чём указывает ключ "-O -". Полученный текст с помощью кода
sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1
очищается от HTML-тегов (значение свойства $1 изменяется при каждом успешном обнаружении заключенного в знаки / .. / шаблона. Шаблон описывает замену любого текста, обрамлённого знаками < (или </) ... > (или />) и содержащего (или нет ) символы a-z, A-Z, цифры от 0 до 9, знаки = (равно), " (двойная кавычка), – (минус), # (диез), . (точка), & (амперсанд) и пробел в любом порядке, влючая неограниченное число повторов).
Затем из очищенного таким образом текста вида
Current IP CheckCurrent IP Address: 217.69.139.200
с помощью оператора
cut -d':' -f2
вычленяется вторая часть строки после деления её по символу : (двоеточие). Получаем
217.69.139.200
(с пробелом в начале строки). Его отсекаем командой
sed 's/^[ ]*//' -
убирающей пробел именно в начале строки. Результат
217.69.139.200