2010-07-28 4 views
2

일련의 실행배쉬 : 된 chroot 명령이 개 문자열 매개 변수를 전달하거나 더 나은 내가 이런 일을 수행하고자하는 명령

chroot /mount-point /path/to/script $var1 $var 2 

윌이 일을? chroot 된 Perl 스크립트가이 두 매개 변수에 전달됩니까? 그렇지 않은 경우 어떻게해야합니까?

그렇지 않으면, 단순히 스크립트에서 chroot을 할 수있는 방법이있다, 나는 단순히 단지 그들이 chroot 후 실행 얻을 것이다 bash에 순차적으로 쓰고, 그것을 이해로서 다음

perl script.pl $var1 $var2 etc? 

등의 명령을 수행 시작 이 끝나면 제어 장치가 perl (PXE에서 실행중인 램 디스크)이 설치되어 있지 않은 위치로 되돌아갑니다.

답변

0

Chroot가이 문제를 잘 처리해야합니다. perl 스크립트가 chroot 컨텍스트에서 Perl 인터프리터를 찾을 수 있는지, Perl 실행 파일이 필요한 공유 라이브러리를 찾을 수 있는지, 경로가 포함되어있는 경우 변수에 이전 경로가 아닌 새로운 루트와 관련된 경로가 있는지 확인하십시오 . chroot에서 필요한 공유 라이브러리의 복사본을 만드는 것보다 쉬울 경우 정적으로 링크 된 perl 실행 파일을 컴파일하려고 할 수 있습니다.

+0

정적으로 링크 된 펄 실행 파일을 컴파일 할 때 확장 할 수 있습니까? chroot를 수행하고 원하는 매개 변수를 전달한 후 내 다음 문제가 될 수 있습니다. – Carmageddon

+0

좋아요. 잘 작동하기 때문에 더 이상의 답장을받지 못했습니다. 답변으로 표시됩니다. 기본적으로 전체 대답은 입니다. chroot/mount-point/path/to/script "$ var1" "$ var2" – Carmageddon

+0

$ var1 및 $ var2에 공백이나 셸 문자가 포함되어있는 경우, 그 (것)들을 본래대로 통과하기 위하여 그 (것)들. Re : 정적 링크를 사용하려면 "ldd/path/to/your/perl"을 실행하고 필요한 라이브러리를 확인해야합니다. 그런 다음 perl 실행 파일 자체와 함께 이들을 chroot 영역에 복사 할 수 있습니다. 어떤 이유로 든이 라이브러리를 복사하지 않으려면 Perl을 정적으로 다시 빌드해야합니다. 이렇게하는 방법은 Perl 소스 배포판에 포함 된 INSTALL 파일에 있습니다. Configure 옵션은 -Uusedl이거나 대화식 configure에서 설정할 수 있습니다. –

0

또는 입력/출력과 상호 작용하기위한 스크립팅 언어 인 Expect를 사용할 수 있습니다.