2016-08-09 2 views
0

서버에서 실행중인 일부 프로세스에서 일부 작업을 수행하기 위해 다른 쉘 스크립트를 호출하는 작업 쉘 스크립트가 있습니다. 이 내부 쉘 스크립트는 때때로 사용자 ID와 암호를 입력하라는 프롬프트를 표시합니다. 이런 일이 생기면 나는이 내부 스크립트를 나오기를 원하고 그 프로세스에 대해 kill -9를 수행하려고합니다. 아무도 이것을 달성하는 방법에 대한 제안을하시기 바랍니다 수 있습니까?쉘 스크립트에서 사용자 입력을 요구할 때 어떻게 잡아서 작동합니까?

한 번 더, 내 셸 스크립트는 무엇이든 로그 파일에 기록하므로 스크립트가 사용자 ID와 암호를 입력하라는 메시지를 표시하면이 정보도 로그에 기록됩니다. 방법은 로그 파일에서 확인하십시오.

저는 Linux OS에서 작업 중입니다. 확인하고 조언하십시오.

+0

'expect' 명령에 대한 문서를 살펴보십시오. 이것은 두 번째 질문이있는 경우에 도움이 될 수 있습니다. –

답변

0

당신은 몇 가지 제한 시간 후 아이 스크립트 을 죽일 수 :

(cmdpid=$BASHPID; (sleep 10; kill -9 $cmdpid) & exec my-child-script) 

을이 경우 당신은 시간의 주어진 기간 (10 초) 후 my-child-script를 죽일 것이다.

스크립트가 입력 대기 중일 때 (표준 입력에서) 검색 할 수 없으며 strace/ptrace를 사용하는 유일한 방법은 이며 실제로는 가치가 있다고 생각하지 않습니다. 그것. 타임 아웃 기반 접근 방식은 훨씬 더 자연스러운 것 같습니다.

당신은 여기 을 찾을 수 있습니다이 질문에이 방법의 몇 가지 추가 예 :

에 관한 로그 파일 :

당신은 grep/sed를 사용하여 로그 파일에서 데이터를 추출 할 수 있습니다 . 해답을 좀 더 구체적으로 만들기 위해 몇 가지 추가 데이터가 필요합니다.

+0

응답의 첫 부분은 잠자기로 지정할 수있는 정해진 시간 내에 완료되지 않을 때 하위 스크립트 종료에 매우 도움이됩니다. 로그 파일에 관한 또 다른 요점은 스크립트가 사용자 입력을 요구하는 경우 대체 조치를 취할 때 사용자 입력 프롬프트를 확인하기위한 로그 파일의 grep/sed를 수행하는 것이 도움이되는지 확인하는 것입니다. – user3764852

+0

@ user3764852 : 예를 들어 프롬프트 문자열을 grep 할 수 있습니다. –

관련 문제