我是 SysAdmin(在 Redhat 中)的新手,需要更正无法运行的 shell 脚本。 .sh 文件最初运行在 Solaris Unix 系统上。
有一个关联的 CRON 作业,它启动脚本来运行 jar 文件,将运行结果通过电子邮件发送给系统管理员,然后将运行结果复制到系统中的特定位置。
我已经做了一些实质性的改变,但有两个部分不起作用:
发送电子邮件:尽管电子邮件与运行结果一起发送,但不会显示主题行和收件人字段。
复制运行结果文件并移动到新的系统位置
我想知道我的 ${} 语法在这两部分中是否不正确。 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
当我在 google 上搜索 Sendmail 时,我得到了很多不同的选项来解决此问题,但由于我当前无法访问 RedHat 环境...不要问...我无法在本地进行测试。该脚本必须发送给第三方来安装。
编辑:我解决了我的问题,并添加了我对代码所做的调整。该脚本现在可以正确发送一封电子邮件,并将运行结果输出作为文件发送,并将生成的带时间戳的文件移动到正确的系统位置。