2012-03-26 4 views
-2

xml 파일의 한 줄을 편집하려면 perl -pi -e를 사용하고 있습니다. 명령 줄에서 perl -pi -e 명령을 실행하면 제대로 작동하지만 일단 스크립트에 넣고 시스템 명령을 사용하면 오류가 발생합니다.Perl 스크립트에서 XML 편집

su : 잘못된 옵션 - i

자세한 정보는`su --help '를 시도하십시오.

print "Please enter virtualhost 1 - Example - ucisha.com:"; 
    my $virtualhost1 = <>; 
    system("ssh -t <HOST> \"sudo su - root -c perl -pi -e 's/xmlNamespaceAware=\"false\">/xmlNamespaceAware=\"false\"> <Alias>$virtualhost1<\/Alias>/g' /tcserver/springsource-tc-server-node/UCISjvm/conf/krh.xml\""); 
+6

sudo를 사용하여 권한을 확대하고 정규식을 사용하여 XML 파일을 편집하는 perl one-liner를 전달하는 원격 시스템에 perl에서 ssh로 포격하고 있습니까? 어머. 30 분 동안 두려움에 빠져들고 난 후에 나는 커맨드 라인 인수로 편집 요구 사항을 취한 다음 해당 XML 파서를 사용하여 Perl 스크립트를 서버에 설치하는 방법을 진지하게 고려할 것입니다. – Quentin

답변

3

-c에 전달하는 인수에 따옴표를 추가해야합니다.

현재 -c perl이 있고 -pisu이 아닌 perl의 또 다른 인수로 사용됩니다.

+0

새로운 오류를 수정하십시오. 일반적으로 프로그램의 가장 중첩 된 부분을 먼저 작성하고 빌드하십시오. 한 번에 하나의 중첩 수준으로 돌아가서 당신이가는 도중에 도망 갈 수 있도록하십시오. – Quentin

+0

여기에 코드를 가져 오는 데 몇 가지 문제가 있습니다. 하지만 지금은 아래 오류가 발생하고 있습니다 : 인쇄 "가상 호스트 1을 입력하십시오 - 예 - ucisha.com :"; my $ virtualhost1 = <>; $ virtualhost1 <\/Alias>/g '시스템 이름 ("ssh -t "sudo su-root -c'perl -pi -e 's/xmlNamespaceAware = \ "false \">/xmlNamespaceAware = /tcserver/springsource-tc-server-node/UCISjvm/conf/krh.xml '\ ""); ash : -c : 예기치 않은 토큰 근처의 구문 오류 '<' bash : -c : 줄 0 :'sudo su - 루트 -c 'perl -pi -e'/ xmlNamespaceAware = false>/xmlNamespaceAware = false> akdljad ' – Badboy

+0

'''로 구분 된 문자열에서 이스케이프 처리되지 않은''문자를 사용하고 있습니다. – Quentin