2011-04-19 2 views
4

그래서 같은 패브릭을 통해 내 원격 서버의 시간대를 변경하려고 해요 :Fabric을 통해 원격 서버 TimeZone을 어떻게 설정합니까?

 
run("export TZ=\":Pacific/Auckland\"") 
run("date") 

이 작동하지 않습니다. run("date") 내게 준다 : Tue Apr 19 00:19:58 CDT 2011 방금 ​​설정 한 시간대가 아닙니다.

난 그냥 서버에 로그인과 같은 bash는 명령을 실행하는 경우는, 모든 단지 예정되어 같이

 
[[email protected]]$ date 
Tue Apr 19 00:20:00 CDT 2011 
[[email protected]]$ export TZ=":Pacific/Auckland" 
[[email protected]]$ date 
Tue Apr 19 17:20:20 NZST 2011 

는 사람이 되거 수 있습니까? 내가 뭘 놓치고 있니?

답변

4
run("export TZ=\":Pacific/Auckland\"") 
run("date") 

이다. 그 환경을 누구에게나 넘길 기회가 없었습니다.

스크립트 환경에서 TZ를 설정 한 다음 date을 실행하십시오. 나는 파이썬을 모른다. 그러나 그럴 것 같다.

os.environ['TZ'] = ":Pacific/Auckland" 
run("date") 
+0

감사합니다. 'os.environ'을 설정해 주셔서 감사합니다. 스크립트에서 여전히 작동하지 않습니다. 여전히 작업 중입니다. 그러나 올바른 방향으로 나를 가르쳐 주셔서 감사합니다. – lazo

+1

@lazo, Perl을 사용한 개념 증명 :'perl -e'local $ ENV {TZ} = ": Pacific/Auckland"; 시스템 ("date") "prints"Wed Apr 20 03:03:12 NZST 2011' – ikegami

1

이것은 현재 쉘에서만 작동합니다. 셸을 닫고 새 것을 시작하고 date을 입력하면 TZ가 기본 시간대로 재설정되었음을 알 수 있습니다. 패브릭의 경우에도 출력을 캡처하면 TimeZone은 올바르게 설정되지만 스크립트가 끝나면 쉘도 마찬가지이므로 TZ 변수를 더 이상 사용할 수 없습니다. 당신은 그것을 종료 후, 환경 변수 중 하나를 설정, 쉘을 실행하고

/bin/sh -c 'export TZ=":Pacific/Auckland"' 
/bin/sh -c 'date' 

처럼

2

ikegami가 환경에 대해 설명했기 때문에 두 개의 별도 명령이 작동하지 않는다. 그러나 다음과 같이 원하는 것을 얻을 수 있습니다 :

run("TZ=':Pacific/Auckland' date") 
관련 문제