쉘 스크립트에서 대화형 jar 파일의 값을 전달하는 방법

쉘 스크립트에서 대화형 jar 파일의 값을 전달하는 방법

우리 환경에서는 Redhat Linux 5.6/6.4 버전에서 실행되고 진단 정보를 수집하는 oswatcher를 사용합니다. 이는 루트에서 예약되고 30초마다 실행되며 iostat, 네트워크 통계, CPU 등에 대한 정보를 수집하고 모든 정보를 아카이브 디렉터리의 .dat 파일(플랫 파일)에 저장합니다.

이제 oswatcher 블랙박스 분석기가 제공하는 대화형 명령을 기반으로 분석을 수행합니다. 우리는 24시간마다 실행되는 셸 스크립트를 사용하여 분석을 자동화하여 24시간 데이터를 마이닝하고 대시보드를 생성하려고 합니다.
다음은 세 가지 입력 매개변수가 필요한 대시보드를 생성하는 명령입니다. 하나는

java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive 

-- 이제 대화형으로 옵션 중 하나가 입력으로 제공될 것으로 예상합니다.

Enter X to Export Parsed Data to Flat File
Enter S to Analyze Subset of Data(Changes analysis dataset including graph time scale)
Enter A to Analyze Data
Enter D to Generate DashBoard

Enter Q to Quit Program

Please Select an Option:   << 1 or 2 or D (dashboard) >> 

(여기서는 입력을 D로 제공하고 싶습니다. 이 입력을 쉘 스크립트의 값으로 전달해야 합니다). 우리는 어떻게 그것을 달성할 수 있습니까? 마찬가지로 두 번째 입력은 분석을 위해 생성할 디렉터리 이름과 디렉터리 경로입니다.

자동화된 분석을 위해 세 가지 매개변수 모두 셸 스크립트에 전달되어야 합니다.

쿠마르에게 인사드립니다.

답변1

대화형으로 입력을 받는다는 것은 에서 입력을 받는다는 의미입니다 stdin. 입력을 프로세스에 다시 반영하여 이를 복제할 수 있습니다 stdin.

echo "D" | java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive

echo개행 문자로 자동으로 끝납니다 .

추가 입력이 필요한 경우 다음을 수행할 수 있습니다.

echo -e "D\n<next_input>\n<next_input>" | ...

-e플래그는 다음과 같은 이스케이프 시퀀스를 해석할 수 있습니다 \n.

관련 정보