2017-02-01 4 views
1

ssh 연결을 위해 반복 할 호스트리스트가 있습니다. 루비에서는 # {variable}을 사용하여 명령 내 변수에 액세스 할 수 있습니다. 파이썬에서 무엇을해야합니까?for 루프에서 변수 보간?

다음 파이썬 코드에 루비 구문을 포함하여 기능을 원하는 위치의 자리 표시 자로 포함했습니다. 이것을하는 비법은 무엇입니까?

h = """ 
foo-pants-linux-001 
foo-pants-linux-002 
foo-pants-linux-003 
foo-pants-linux-004 
foo-pants-linux-005 
""" 

hosts = h.split() 

for host in hosts: 
    subprocess.check_output("ssh [email protected]#{host} `echo hi!`") 
+0

가능한 [Ruby의 문자열 보간법과 동일한 파이썬이 있습니까?] (http://stackoverflow.com/questions/4450592/is-there-a-python-equivalent-to-rubys-string-interpolation) –

+0

만약 당신의'h '가 공백으로 분리 된 것보다 여러 줄로 나올 것이라면,'h.splitlines()'는 더 명시 적이거나 더 안전합니다 (호스트 이름과 함께 인수를 추가하고 싶다면 아마도) 그것. –

답변

1

당신이 할 수있는 사용 모듈 (%) 또는 .format(..) 중 하나

subprocess.check_output("ssh [email protected]%s `echo hi!`"%host) 
subprocess.check_output("ssh [email protected]{host} `echo hi!`".format(host=host)) 
subprocess.check_output("ssh [email protected]{} `echo hi!`".format(host)) 

%s 당신이 호스트의 문자열 값을 의미 형식 지정자입니다. 경우

당신은 명시 적으로 명명 된 매개 변수를 format()를 호출 한 후 {host}을 사용할 수있는 여러에게 이름 변수를 소개합니다.

{}을 사용할 수도 있습니다. 즉, .format(..)에 주어진 인수에서 다음 요소를 사용합니다.