저는 Redhat의 SysAdmin을 처음 사용하며 실행되지 않는 셸 스크립트를 수정해야 합니다. .sh 파일은 원래 Solaris Unix 시스템에서 실행되었습니다.
jar 파일을 실행하는 스크립트를 시작하고 결과를 시스템 관리자에게 이메일로 보낸 다음 결과를 시스템의 특정 위치에 복사하는 관련 CRON 작업이 있습니다.
몇 가지 중요한 변경을 했지만 다음 두 부분이 작동하지 않습니다.
이메일 보내기: 실행 결과를 이메일로 전송하지만 제목과 수신자 필드가 표시되지 않습니다.
실행 결과 파일을 복사하여 새 시스템 위치로 이동합니다.
이 두 부분에서 내 ${} 구문이 잘못된 것인지 궁금합니다. jar 파일이 올바르게 실행됩니다.
#!/bin/sh
#Declare the required paths
JAVA=/usr/local/...../jdk/jre/bin/java
CLASSPATH=/usr/local/..../apps/JavaProg
#Declare the logging params
LOGPATH=/usr/local/..../logs #removed spaces either side of assignment
LOGDTTM=$(date +"%Y-%m-%d") #moved + sign to left of "
#Declare the email params
[email protected],[email protected]
SUBJECT="Results: Run File"
[email protected]
#Change to the javaprog.jar location
cd ${CLASSPATH}
#Run the jar file
${JAVA} -jar ${CLASSPATH}/javaprog.jar
#Send an email to the SysAdmin with the output of the javaprogrun.log
#echo -e "Subject: ${SUBJECT}" |
#cat - javaprogrun.log |
#/usr/sbin/sendmail -f "${FROM}" -t "${ADMINS}"
#above section replaced with:
BODY=javaprogrun.log
(cat-${BODY})<<EOF|/usr/sbin/sendmail -i ${ADMINS}
Subject:$SUBJECT
To:${ADMINS}
From:${FROM}
EOF
#Copy the log run file into new file format and move to the logs directory
mv javaprogrun.log ${LOGPATH}/xxx-javaprogrun-b2.${LOGDTTM}.log
Sendmail을 검색했을 때 이 문제를 해결할 수 있는 다양한 옵션이 있었지만 현재 RedHat 환경에 액세스할 수 없기 때문에...묻지 마세요...로컬에서 테스트할 수 없습니다. 설치를 위해서는 스크립트를 제3자에게 보내야 합니다.
편집: 문제를 해결하고 코드에 적용한 조정 사항을 추가했습니다. 이제 스크립트는 이메일과 실행 출력을 파일로 올바르게 보내고 결과 타임스탬프 파일을 올바른 시스템 위치로 이동합니다.