2009-12-30 6 views
0

다른 네트워크 컴퓨터 (Windows)의 폴더에 액세스하는 루비 스크립트를 작성하고 있습니다. 해당 컴퓨터에서 환경 변수를 알아야합니다. 어떻게해야합니까? 원격 환경 변수에 액세스하면 소프트웨어가 설치된 위치를 알 수 있습니다.Ruby에서 다른 컴퓨터의 환경 변수에 액세스

감사 N -

답변

0

당신은 당신이 (즉 환경 변수 등)을 필요로하는 출력 스트림 정보를 인쇄 도우미 스크립트를 사용하여 간단한 HTTP 서버를 배포해야합니다. 다음에는 원격 시스템에서 해당 스크립트를 호출하고 결과를 구문 분석해야합니다.

또는 서버가 없으면 예약 된 작업을 원격 컴퓨터에 추가합니다. 예약 된 작업은 필요한 정보를 일별 한 번만 알려진 파일에 씁니다. 고정 된 경로로 파일을 만듭니다. 훨씬 간단하지만 정보가 지연되는 것을 보게됩니다.

+0

@UncleMiF, 감사! 두 번째 제안은 다른 일이 없다면 내가 할 수있는 일로 계획 한 것이 었습니다. –

2

솔루션이 순수한 Ruby 여야합니까? 그렇지 않은 경우 PsExec 명령을 사용할 수 있습니다. 다음 출력됩니다 (현재 사용자) remote에 환경 변수 :

psexec \\remote cmd /C set 

이 원격 cmd을 실행하고 그것을 실행하는 명령 set를 전달하여 작동합니다.

다음 루비 코드는 PsExec를 실행하고 해시로 원격 환경 변수를 반환 :

Hash[*`psexec \\\\remote cmd /C set`.split("\n"). 
    collect {|i| i.split('=', 2)}.flatten] 
+0

원격'cmd' 인스턴스를 시작할 필요가 없습니다. PowerShell은 환경 변수를 잘 다룰 수 있습니다. 예를 들어 레지스트리처럼 "Env :"라는 가상의 "드라이브"로 표시되는 Env 공급자를 통해 지원됩니다. 모든 환경 변수를 나열하려면'Get-ChildItem Env :'(또는 그 별명'dir Env :'또는'ls Env :')를 할 수 있습니다. 특정 환경 변수에 접근하려면 다른 파일이나 변수와 마찬가지로'Get-Content Env : \ PROGRAMFILES' (또는'cat' 또는'type')를 사용하십시오. 또한'$ Env : PROGRAMFILES' 구문을 사용할 수 있습니다. –

+0

감사합니다. Phil. 나는 이걸 시험해보고 알려줄거야. –

관련 문제