[原创] CQ(clear quest)自动执行查询并将查询结果通过email发送的实现

负责的项目有时候会被项目经理找来催,原来又没有及时的去搜索CQ。。。

于是这两天自己实现了一下能自动执行CQ查询的脚本,同时还能降查询结果发送到我的邮箱。分享一下吧:

简单说明一下:

1)其实是两个比较独立的的功能拼凑到一块实现的, 一个功能是CQ的登陆和查询, 看函数logonDMS()和DoQuery(); 一个功能是发送email,看函数sendmail()。

2)是用CQ的perl接口实现的,执行的时候不能用原生的perl执行, 必须用CQ安装目录下的CQPerl.exe 来执行。

好了,直接上code吧, 为了“保密”, 所有个人信息的地方都更换了, 理解的吧哈。

###basic version
use CQPerlExt;
use Net::SMTP;
use LWP::Simple qw(get);
use File::Path;
use Net::SMTP;

our $sessionObj;
our $querydef;
our $dms_summary;
our $dms_query1 = "Personal Queries/projectA"; #替换了我的实际的query文件名称和位置哈
our $dms_query2 = "Personal Queries/projectB"; #替换了我的实际的query文件名称和位置哈

#usage: CQPerl.exe this_script.pl
#precondition: define queries such as $dms_query1, $dms_query2, then call them by DoQuery($dms_query1); and DoQuery($dms_query2);

sub logonDMS{
print "DMS login begin.\n";
$sessionObj = CQSession::Build();
$sessionObj->UserLogon( "name", "pass", ‘database1‘, "");  #替换了实际的用户名(name)密码(pass)和实际的数据库名称(database1),请根据环境自行更正
print "DMS login successfully.\n";
}

sub DoQuery{ #arg = dms_query
my ($query) = @_;
print "do query begin for $query \n";

my $workspace = $sessionObj->GetWorkSpace();
my $querydef = $workspace->GetQueryDef($query);

my $resultset = $sessionObj->BuildResultSet($querydef);
$resultset->EnableRecordCount();
$resultset->Execute();
$num_rows = $resultset->GetRecordCount();
print "number of DMSs: $num_rows \n";

if ($num_rows <=0)   #这里是返回了,因为没有查询到任何结果
{
$dms_summary .= ‘<br/><br/><H1 style="color:red">‘.‘You have no DMS need handle under query:<br/>‘.$query.‘<br/><H1/>‘;
return;
}

$status = $resultset->MoveNext();
$dms_summary .= ‘<table border="1">‘;

while($status == $CQPerlExt::CQ_SUCCESS){
print $resultset->GetColumnValue(2); print "\t";# ‘1‘ often means internal id, so identify your desired columns from ‘2‘
$dms_summary .= ‘<tr><td>‘.$resultset->GetColumnValue(2).‘<td/>‘;
print $resultset->GetColumnValue(4); print "\n";
$dms_summary .= ‘<td>‘.$resultset->GetColumnValue(4).‘<td/></tr>‘;
$status = $resultset->MoveNext();
}

print "do query finish.\n";
$dms_summary .= ‘</table>‘;
print $dms_summary;
}

sub sendmail{
my $smtp = Net::SMTP->new(‘smtpserverxx.company.com‘) or die "Cannot connect to server";  #哈哈, 替换了我的smtp的服务器
$smtp->mail(‘[email protected]‘); #替换了我的邮箱地址哦
$smtp->to(‘[email protected]‘);
$smtp->data();
$smtp->datasend("To: myname\@xxx.com\n");  #测试用,还是发到自己邮箱
$smtp->datasend("From: myname\@xxx.com\n");
$smtp->datasend("Content-Type: text/html \n");
$smtp->datasend("Subject: CQ test\n");
$smtp->datasend("\n");
$smtp->datasend($dms_summary);
$smtp->dataend();
$smtp->quit;
}
##################body ######
logonDMS();

DoQuery($dms_query1);
DoQuery($dms_query2);
CQSession::Unbuild($sessionObj);
sendmail();

[email protected] at 20150121 night

时间: 2024-10-24 20:28:53

[原创] CQ(clear quest)自动执行查询并将查询结果通过email发送的实现的相关文章

原创:Mac AppleScript 自动登录两个QQ

前提,已有登录过的账号,且没有设置为自动登录 p.p1 { margin: 0.0px 0.0px 0.0px 41.6px; text-indent: -41.6px; font: 12.0px Verdana; color: #0433ff } p.p2 { margin: 0.0px 0.0px 0.0px 83.2px; text-indent: -83.2px; font: 12.0px Verdana; color: #0433ff } p.p3 { margin: 0.0px 0.

[原创软件]友盟自动添加版本工具

软件主要功能: 自动化模拟登录友盟 自动排序候选版本号,并筛选前30个版本添加到目标版本号 软件界面截图: 开发环境及语言: Python3.6 PyQt5.11 更新日志: v1.0(2018.6.30) 发布初始版本 原文地址:https://www.cnblogs.com/v88v/p/9265997.html

【原创】jenkins+maven自动部署脚本

jenkins+maven自动部署脚本 2019-02-01 09:34:38 前提,所有主机都做了免密登录操作,相信下面的版本大家应该可以看得明白,我是两台服务器,但只放开了一个服务器的配置,原理很简单: 1.配置一些经常变化的变量 2.进入svn下载下来的源代码空间目录,然后编译 3.远程备份文件(很重要) 4.进入编译后的文件夹target,将文件拷贝至远程生产主机 5.远程重启服务,搞定! #!/bin/bash source /etc/profile #基础环境变量 SERVER_23

JS实现自动提示框匹配查询

本文介绍一下仿百度搜索框,当对输入框键入文字时,自动弹出建议选项并匹配. 效果如下: OK,首先,建个输入框哈 1 <!DOCTYPE html> 2 <html> 3 <meta charset="utf-8"> 4 <head> 5 <title>自动搜索</title> 6 </head> 7 <body> 8 自动搜索框 <input type="text"

Entity Framework 6 Recipes 2nd Edition(13-6)译 -&gt; 自动编译的LINQ查询

问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associate and its related Paycheck 在这个模型里,每个Associate(同事)有0到多个Paychecks(薪水),你有一个LINQ查询,它在你的整个应用程序中重复使用,你想仅编译一次,然后复用这个已编译的版本,通过这种方式来提高这个查询性能. 当针对数据库执行时,EF必须把你的

mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?

MYSQL在创建索引后对索引的使用方式分为两种:1 由数据库的查询优化器自动判断是否使用索引:2 用户可在写SQL语句时强制使用索引 下面就两种索引使用方式进行说明第一种,自动使用索引.数据库在收到查询语句后会查看where语句后面的查询条件,同时查看在表上面有哪些索引,然后根据查询条件和索引进行匹配.查询条件和索引的匹配包括查询字段与索引字段的匹配和查询类型和索引类型的匹配.前者很好理解,就是查询条件的属性上要建有索引,后者则是说查询条件必须能够使用索引,比如等值判断和范围查询可以使用B+树索

如何利用工具自动通过百度网盘好友请求并发送消息或文件

在百度网盘营销过程中,特别是资源类相关的网盘帐号,有时需要在自动通过好友请求并发送一些文字消息如(资源介绍)以及公众号二维码图片之类的需求,如果手工操作则非常痛苦,下面介绍如何利用工具来达到自动通过好友请求并发送文字消息或文件. 一,首先下载工具“https://pan.baidu.com/s/13yPBCs9Et_tQ9HVVCu5b2A”: 二,在帐号管理中登录并获取COOKIE,保存后,右键帐号登录. ? 第三步:切换到自动通过好友请求选项卡 ? ①设置每次间隔运行时间,如果要发送消息则勾

mybatis代码自动生成的where-if 查询Integer类型不生效问题

查询语句: <if test="intoIsPassed != null and intoIsPassed != '' "> and r.into_is_passed = #{intoIsPassed, jdbcType=INTEGER} </if> 数据库内容: postman查询条件: 查询结果: "intoIsPassed": 1, 中途没有任何报错!!!!!! 修改:去掉后面判断部分 查询语句: <if test="i

Presto源码解读1-客户端提交查询-吕信(原创)

客户端请求处理就是接收交互式/非交互式命令,通过httpclient发送到服务器(coordinator),客户端通过httpclient更新执行状态打印给用户看,最后收集结果打印给用户.启动Presto cli 客户端的代码文件为: presto-cli\src\main\java\com\facebook\presto\cli\Presto.java public final class Presto { private Presto() {} public static void main