Perl CGI 스크립트에서 ssh
, mkdir
을 실행하려고합니다. 작동하지 않습니다. 하지만 일반적인 펄 스크립트에서는 정상적으로 작동합니다. Perl CGI 스크립트에서 명령을 실행하는 방법을 말해 줄 수 있습니까?Perl CGI에서 어떻게 UNIX 명령을 사용할 수 있습니까?
답변
시스템() 또는 popen()이 아마도 당신이 찾고있는 것일 수 있습니다. 더러운 느낌이 든다면 다시 똑딱 소리를 사용할 수 있다고 생각합니다.
웹 서버를 통해이 스크립트를 실행하는 경우 mkdir
및 ssh
과 같은 명령을 실행하는 데 필요한 권한이 활성 사용자 (예 : "nobody", "www"등)에 없을 수 있습니다. 그렇다면 펄이 해결할 수있는 것이 아닙니다. 파일을 작성하고 명령을 수행하도록 설정 웹 사용자 권한을 가지고, 또한 보안 문제입니다
print "The active user is: ", `whoami`;
: 당신은 활성 사용자가 같은 뭔가 누구 테스트 할 수 있습니다.
예 웹 서버를 통해 실행 중입니다. 그래서 Perl CGI를 통해 SSH를 사용하는 다른 컴퓨터에 로그인 할 수있는 방법이 있으며 SSH에는 암호가 필요하지 않습니다. –
@ user970553 나는 이미 당신에게 그 질문에 대답하는 데 필요한 정보를주었습니다. – TLP
unix 명령을 실행해야합니까? Perl에는 mkdir이 내장되어 있으며 SSH를 처리 할 수있는 모듈이 있습니다. 일반적으로 CGI 프로세스는 기능이나 시스템에 대한 액세스가 제한됩니다. Perl에서 더 많이할수록 좋습니다.
솔루션에 대한 감사의 표현 –
- 1. Perl CGI에서 요소 값을 어떻게 처리 할 수 있습니까?
- 2. perl cgi에서 다이가 작동하지 않음
- 3. Perl CGI에서 스타일 데이터로 스팬 사용
- 4. Unix find 명령에 path 인수로 variable을 어떻게 사용할 수 있습니까?
- 5. 장고에서 unix 명령을 실행하십시오.
- 6. 우리는 cgi에서 python progam을 실행할 수 있습니까?
- 7. PERL CGI에서 제출 쿼리를 호출 할 수 없습니다
- 8. Perl 스크립트가 Amazon Cloud를 사용할 수 있습니까?
- 9. 어떻게 Perl 변수 이름으로 변수의 값을 사용할 수 있습니까?
- 10. Spring Roo에서 어떻게 하나의 롤백 명령을 사용할 수 있습니까?
- 11. Perl 스크립트는 unix 명령 시스템을 호출합니다.
- 12. Perl 프로젝트에서 자동 테스트를 사용할 수 있습니까?
- 13. Perl 변수에서 grep을 사용할 수 있습니까?
- 14. Perl 스크립트에서 Perl 한 행을 사용할 수 있습니까?
- 15. node.processTemplate ftl이 include 명령을 사용할 수 있습니까?
- 16. 스프링 폼 명령을 맵으로 사용할 수 있습니까?
- 17. WPF에서 별칭 명령을 사용할 수 있습니까?
- 18. waitForElementWidth Selenium 명령을 독립적으로 사용할 수 있습니까?
- 19. 어떻게 사용할 수 있습니까?
- 20. Java에서 unix 명령을 실행하는 방법
- 21. CGI에서 사용 가능한 Perl 버전 및 모듈을 확인하십시오.
- 22. ruby 창에서 unix 명령을 실행하십시오.
- 23. 어떻게 다른 UNIX 명령
- 24. Django : Django에서 Unix 명령을 실행 하시겠습니까?
- 25. Java에서 UNIX 기본 명령을 실행하는 방법?
- 26. exec()를 사용하여 unix`at` 명령을 실행하십시오.
- 27. unix 명령을 사용하여 이미지 이름 바꾸기
- 28. raw_input을 꼬아 서 어떻게 사용할 수 있습니까?
- 29. Windows 운영 체제에서 UNIX GREP 명령을 사용하는 방법이 있습니까
- 30. Perl CGI에서 방문자 브라우저 창 크기를 얻는 방법
실제 코드는 흥미로울 것입니다. 어떤 명령이 "일반 스크립트"에서는 작동하지만 "CGI"에서는 작동하지 않습니까? 무슨 오류 메시지가 나옵니까 ('$!')? –
demo.pl에서 나는 시스템 ("ssh username @ machinename 'ls/directoryname'") 에서 demo.cgi를 사용하고 있습니다. 나는 정상적인 펄 스크립트에서 잘 작동하는 디렉토리를 만들기위한 시스템 명령조차도 작동하지 않는 동일한 명령을 사용하고 있습니다. perl cgi에서는 그렇지 않습니다. 명령은 다음과 같습니다. system ("mkdir dirname"); –
'system'은 stdout을 캡처하지 않습니다. bash에서 스크립트를 시도 할 때 "작동 중"이라고 생각하면, 터미널에 인쇄 된 펄 프로세스의 배경에서 stdout을 볼 수 있기 때문입니다. 이 데이터는 perl에서는 사용할 수 없으며 아마도 웹 서버에도 없을 것입니다. 'qx()'또는 backticks를 사용하여 stdout을 캡처하십시오. – TLP