
내 Fedora 19 상자에서 다양한 웹 프록시를 통해 웹 사이트 성능을 확인해야 하며, 내 파일에 있는 프록시의 DNS 확인 이름에 로컬 확인 가능한 이름 "프록시"를 설정하여 이를 수행하고 싶습니다 /etc/hosts
. 따라서 /etc/hosts
파일 내용은 다음과 같아야 합니다.
proxy.us.company.com proxy
#proxy.eu.company.com proxy
#proxy.sa.company.com proxy
그런 다음 다른 프록시를 테스트해야 할 때 파일을 편집 /etc/hosts
하고 다른 프록시 DNS 이름의 주석 처리를 제거하면 내 모든 로그인(및 내 컴퓨터를 사용하는 다른 모든 사람)이 새 프록시에 대해 확인됩니다. 그리고 위의 DNS 이름 대부분은 라운드 로빈 항목으로, 테스트에도 적합하고 필요합니다. (사실, 실제 작업에도 이 기능이 필요합니다. 가끔씩 Proxy.us가 정체되어 다른 프록시 중 하나가 Proxy.us보다 빨라지기 때문입니다.)
이 작업을 수행하려면 어떻게 해야 합니까? env 변수를 변경하는 스크립트 작성을 고려했지만 http_proxy
이 방법을 사용하면 모든 로그인 변수를 함께 정렬하기 위해 모든 프로세스에 추가 단계를 추가해야 합니다. 한 번에 바꾸고 싶어요. /etc/hosts
이와 같이 시스템 전체의 이름 확인을 변경하는 것이 가장 논리적인 장소인 것 같습니다.
답변1
/etc/hosts는 이름을 IP 주소에만 매핑합니다. 이름을 다른 이름으로 가리킬 수 없습니다.
/etc/hosts를 계속 사용할 수 있지만 이름을 IP로 확인하고 해당 IP로 /etc/hosts를 수정하는 스크립트를 작성하거나 미리 작업을 수행하여 여러 개의 호스트 파일을 만들고 스크립트를 간단히 이동하도록 해야 합니다. 확인의 적절한 지점에서 각 프록시에 대한 파일을 제자리에 배치합니다.
답변2
이것은 할 수 없습니다. 내가 원하는 작업을 수행하는 가장 좋은 솔루션은 이름 확인자(바인드, 이름 지정)를 설치하고 해당 로컬 테이블을 프록시의 FQDN으로 업데이트하는 것입니다.
답변3
원하는 작업을 수행하는 Python 스크립트는 다음과 같습니다.
#!/usr/bin/env python
from dns.resolver import Resolver
from re import sub
hostsfile='/etc/hosts'
proxies = [
'proxy.us.company.com',
'proxy.eu.company.com',
'proxy.sa.company.com'
]
name = 'proxy'
def main():
proxy = menu('Select proxy:', proxies)
ip = Resolver().query(proxy,'A')[0].to_text()
if len(ip):
with open(hostsfile, 'r') as h:
hosts = h.read()
with open(hostsfile, 'w+') as h:
hosts = sub('((\n|(?<!\n)\.)(1?\d?\d|2[0-4]\d|25[0-5])){4} +'+name+'(?= *\n)', '\n'+ip+' '+name, hosts)
h.write(hosts)
def getInt(question, min, max):
min,max = [int(max),int(min)] if min>max else [int(min),int(max)]
while True:
try:
answer = int(raw_input('{0}: '.format(question)))
if min <= answer <= max:
return answer
print('Must be a number from {0} to {1}'.format(min,max))
except ValueError:
print('Not a valid number')
def menu(title, items, index=False):
print(title)
for i, item in enumerate(items):
print('{0}. {1}'.format(i+1, item))
answer = getInt('', 1, len(items)) - 1
return answer if index else items[answer]
main()