LINUX.ORG.RU
решено ФорумAdmin

Shell-скрипт, обновляющий запись IP-адреса в tinyproxy.conf

 , ,


0

2

Написал вот такой скрипт, который будет при необходимости обновлять запись IP-адреса в конфигурационном файле tinyproxy:

#!/bin/sh
# AddHeader "X-Forwarded-For: 127.0.0.1"
while true; do
  echo "$(date '+%Y-%m-%d %H:%M:%S')"
  ip="$(curl -s 'https://ifconfig.me/ip')"
  oldip="$(grep 'AddHeader "X-Forwarded-For: ' /etc/tinyproxy/tinyproxy.conf)"
  if [ "${oldip}" = 'AddHeader "X-Forwarded-For: ${ip}"' ]; then
    echo 'eq'
  else
    echo 'neq'
    echo "${ip}\n${oldip}"
    echo 'Обновление IP-адреса...'
    sed -i 's/X-Forwarded-For: [^\}]\+\}/X-Forwarded-For: ${ip}\}/g' /etc/tinyproxy/tinyproxy.conf
    echo 'Перезапуск службы tinyproxy...'
    rc-service tinyproxy restart
  fi;
  echo 'Перерыв в 10 секунд'
  sleep 10s
done

Не получилось ли слишком монструозно? Как будет красивей?

P. S. Менять shell на пистон — не предлагать.

★★

Последнее исправление: posixbit (всего исправлений: 4)

Ответ на: комментарий от firkax

У меня tinyproxy добавляет заголовок с клиентским IP-адресом, а затем передаёт некоторые http-запросы с помощью upstream на tor-сервер. Всё это нужно для того, чтобы после установки соединения с недоступным со стороны провайдера торрент-треккером (анонсером), проверяющим заголовки XF-F, происходила правильная выдача пирам моего IP-адреса. Скрипт понадобился, т. к. у меня динамический IP-адрес.

posixbit ★★
() автор топика
Ответ на: комментарий от anc

вот эти ребята https://ifconfig.me/ip

Я был уверен, что этот сайт принадлежит корпорации Google, т. к. ей принадлежит IP-адрес сайта. Судя по домену, сайт может быть просто размещён на хостинге от Google. В любом случае изменил на 5 минут.

posixbit ★★
() автор топика

Парсить в цикле конфиг не правильно, правильно у хороших админов — когда вы точно уверены, что за эту строку в конфиге будет отвечать вот этот скрипт, он командует конфигом tinyproxy и стартует до старта proxy и потому даже при старте grep-ать не надо, а просто изменить не проверяя, ведь sed-у всё равно. Тогда и будет простое сравнение ip и ваш «if» не будет такой ужасный. Впрочем, оно и так прокатит в цикле, ведь будет первое сравнение пустой oldip строки с полученным ip.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)