2017-05-04 5 views
0

나는 해결해야 할 기본적인 문제가 있습니다. 저는 python을 처음 사용하고 python3을 사용하여 사용자의 입력을 가져 와서 다중 행 문자열 내의 특정 위치에 붙여 넣기를 원합니다. 나는 특정 위치를 달성하기 위해 전적으로 확신하지 못합니다. 내가 무엇을 가지고python3 DNS 도메인 블록 스크립트

지금까지

new_domain = input("Ener domain you would like to block: ") 

zone = """zone {} IN {{ 
      type master; 
      file "zones/192.168.1.1.zone"; 
      allow-transfer { none; }; 
      allow-query { my-dmz; }; 
}; 
""".format(new_domain) 

내가

Error is "KeyError: ' none;' 

내가 사용자를 배치 할 {} 유효한 매개 변수를 확인하기 위해 여러 줄 문자열에서 탈출해야합니까 코드를 실행

입력?

출력 형식이 올바른 경우 여러 도메인에 붙여 넣어 도메인에 입력 할 특정 출력을 붙여 넣으려고합니다.

그래서 원하는 출력은 어떤 도움에 미리

Enter domain you would like to block? test123.com 

zone "test123.com" IN {{ 
      type master; 
      file "zones/192.168.1.1.zone"; 
      allow-transfer { none; }; 
      allow-query { my-dmz; }; 
}; 

감사 할 것이다.

답변

0

좋아, 내가 아래의 코드를 발견 다른 곳에서 도움이 후, 그래서 다른 관심있는 사람들을 위해 일하는

내가 사방 이상한 이스케이프 문자가 있어야하는 것처럼이 {}의 형식 마커를 사용하지 않는 것이 필요
new_domain = input("Ener domain you would like to block: ") 

print("""zone "%s" IN { 
       type master; 
       file "zones/192.168.1.1.zone"; 
       allow-transfer { none; }; 
       allow-query { my-dmz; }; 
};""" % new_domain) 

. 대신 %의 전통적인 서식 옵션이 사용되었습니다. 트릭을 수행하는 것 같습니다.

이제는 while 루프에 배치하고 추가 할 도메인이 수백 개있어 파일에 항목을 쓰는 작업을 할 것입니다.