如何在AIX环境通过Shell Script连接邮件系统与Informix 4GL实现自动化审批
解决方案:AIX下Shell脚本联动邮件系统与Informix 4GL实现审批触发操作
1. Shell脚本搭建邮件系统与Informix数据库的连接
- 邮件系统对接:直接用AIX自带的
sendmail或mailx工具完成邮件发送(你已实现),接收端通过读取系统邮件队列或procmail触发脚本。 - Informix数据库连接:在Shell脚本中先配置Informix环境变量,再用自带命令行工具
dbaccess执行SQL,或调用编译后的Informix 4GL程序:# 配置Informix环境变量(根据实际部署调整) export INFORMIXDIR=/opt/informix export INFORMIXSERVER=your_db_server export DB_LOCALE=zh_CN.utf8 export PATH=$INFORMIXDIR/bin:$PATH # 用dbaccess执行SQL查询示例 dbaccess your_db_name << EOF SELECT file_path FROM pending_files WHERE status='waiting'; EOF
2. 读取并处理邮件回复(检测“approve”关键字)
- 读取收件箱内容:用
mailx导出邮件到临时文件,便于后续处理:mailx -f /var/spool/mail/your_user > /tmp/mail_temp.txt - 筛选目标邮件:匹配审批回复的主题和正文关键字,提取关联的文件标识(比如邮件中附带的file_id):
# 提取含"approve"且主题为审批请求的邮件内容,获取file_id FILE_ID=$(grep -B 5 -A 10 "approve" /tmp/mail_temp.txt | grep "File ID:" | awk '{print $3}') - 避免重复处理:处理完成后删除已读邮件或归档:
# 删除指定编号的邮件(需先获取邮件编号) mailx -f /var/spool/mail/your_user -d 5 - 自动触发优化:用
procmail配置规则,自动将符合条件的邮件转发到处理脚本::0 * ^Subject:.*Approval Reply * ^Body:.*approve | /opt/scripts/process_approval.sh
3. 根据邮件回复触发数据库文件移动操作
- 更新数据库状态:先通过
dbaccess或4GL程序将对应文件的状态改为已审批:# 用dbaccess更新状态 dbaccess your_db_name << EOF UPDATE pending_files SET status='approved' WHERE file_id=$FILE_ID; EOF - 执行文件移动:从数据库获取文件路径,执行
mv命令:# 提取文件路径到变量 FILE_PATH=$(dbaccess your_db_name << EOF | grep -v "^Database selected." | grep -v "^1 row(s) retrieved." SELECT file_path FROM pending_files WHERE file_id=$FILE_ID; EOF ) # 移动到目标目录 mv "$FILE_PATH" /opt/approved_files/ - 复杂逻辑用4GL实现:如果涉及多步数据库操作,编写Informix 4GL程序编译后由Shell调用:
编译后在Shell中调用:MAIN DEFINE file_id INTEGER, file_path CHAR(255) LET file_id = ARG_VAL(1) -- 查询文件路径 SELECT file_path INTO file_path FROM pending_files WHERE file_id = file_id; -- 执行移动命令 SYSTEM "mv ", file_path, " /opt/approved_files/" -- 更新数据库状态 UPDATE pending_files SET status='approved' WHERE file_id=file_id; COMMIT WORK; END MAIN/opt/bin/approve_file_process $FILE_ID
内容的提问来源于stack exchange,提问作者rajaram .m
相关产品推荐
相关产品推荐

