Попробуйте это:
perl -e 's/foo/bar/g;' -pi `egrep -l 'foo' $(find -type f)`
Это ищет регулярное выражение и возвращается на именах файлов, где это найдено. Затем Perl будет воздействовать только на те файлы.
tsocks
приложение может socksify любые приложения
tsocks app args
Как указано enzitib,tsocks
может использоваться для использования прокси SOCKS с yum
.
Чтобы быть более подробным, можно использовать его как это:
$ export TSOCKS_CONF_FILE=$HOME/.tsocks.conf
$ cat .tsocks.conf
server = 127.0.0.1
server_port = 1080
$ tsocks yum ...
По умолчанию tsocks использует версию 4 SOCKS - но можно настроить 5 с помощью 'server_type' директивы. Для опций пользователя/пароля существуют директивы 'default_user'/'default_pas и переменные среды TSOCKS_USERNAME/TSOCKS_PASSWORD.
Proxychaines
также хороший вариант для Вас!
сначала загрузите его и установите Вашу информацию о носках в proxychains.conf
файл и входит proxyxhanes
перед любой командой, что Вы хотите прокси носков использования!
Добавьте эту строку к /etc/yum. conf
и убедитесь, что используете ожидаемый протокол (не http):
...
proxy=socks5h://localhost:1080
...
Добавьте эту строку в /etc/yum.conf
(идея пришла из сообщения от DaPillow)
proxy=socks5://ip:port
В случае необходимости разрешения имени хоста через прокси, благодаря Дэнни из комментариев это бы сработало:
proxy=socks5h://ip:port
Это сработало на мне, используя yum 3.4.3 на Fedora 21.
Я использую CentOS6.x с yum -3.2.29 -81, curl/libcurl 7.19.7 -53 и имею ту же проблему. У меня есть серверы yum за брандмауэром, и я хочу использовать yum поверх настройки прокси-сервера SOCKS5 с использованием ssh. В идеале я хочу сделать это, не требуя tsocks, proxychains или любых других утилит «socksification».
Я устанавливаю соединение SOCKS5 с помощью:
ssh -D 40000 dmz-server
Я порылся в исходниках yum python и увидел, что они используют pycurl, который обертывает libcurl (также обратите внимание, что все переменные среды прокси --http _proxy, HTTP _PROXY, все _proxy, ВСЕ _ПРОКСИ и т. д. --были изначально не определены ). Кроме того, я убедился, что ~/.curlrc был пуст, поэтому результаты моего теста не испортились.
Я хотел посмотреть, смогу ли я заставить curl разговаривать через прокси socks5:
curl --socks5 127.0.0.1:40000 http://some-server/some-url
успешно вернул удаленную веб-страницу, так что это был хороший знак, --показывающий, что libcurl может использовать прокси-серверы SOCKS5. Однако определение переменной окружения
http_proxy=socks5://127.0.0.1:40000
не хватило:
http_proxy=socks5://127.0.0.1:40000 curl http://some-server/some-url
не удалось.
В этот момент я переключился на использование тестовой программы Python test.py:
import pycurl
import sys
sys.stderr.write("Testing %s\n" % pycurl.version)
c = pycurl.Curl()
c.setopt(c.URL, 'http://some-server/some-url')
c.setopt(c.WRITEFUNCTION, sys.stdout.write)
c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c.perform()
c.close()
Теперь бегом
./test.py
не удастся получить, но работает
http_proxy=socks5://127.0.0.1:40000./test.py
будет успешно получать http ://какой-то -сервер/некоторый -url . Так что мне кажется, что эта (по общему признанию древняя )комбинация yum/libcurl, поставляемая с CentOS6, неправильно устанавливает тип прокси в libcurl. Я думаю, что происходит то, что PROXYTYPE по умолчанию использует стандартный HTTP-прокси вместо идентификации socks5 :// схемы в URL-адресе, указанном в переменной окружения http _proxy .
В любом случае,следующий патч к /usr/lib/python2.6/site -packages/urlgrabber/grabber.py помог мне получить доступ к http :// репозиториям yum через прокси-сервер SOCKS5. Внутри PyCurlFileObject #_установите _opts (self, opts={} ), добавьте:
if self.scheme == 'http':
proxy = os.getenv('http_proxy') or os.getenv('HTTP_PROXY') or os.getenv('all_proxy') or os.getenv('ALL_PROXY')
if proxy and proxy.find("socks5://") != -1:
self.curl_obj.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
вокруг строки 1205, прямо перед
# ssl options
if self.scheme == 'https':
С этим изменением
http_proxy=socks5://127.0.0.1:40000 yum install <package_name>
успешно подключается ко всем моим репозиториям http :// yum по другую сторону брандмауэра через ssh-прокси SOCKS5.
Конечно, можно экспортировать переменную окружения http _proxy внутри оболочки, чтобы не указывать ее перед каждым вызовом yum .
dante
вместо этого. Его командаsocksify app args
, похожий с tsocks. (и как то же как tsocks.conf для команды tsocks, Вам также нужен socks.conf для команды socksify). Однако к socksifyyum
, Я повторно управляю ответом @Klaus. Измените/etc/yum.conf, лучше. – Bruce 19.01.2018, 23:17