如何通过Unix版Qlik CLI重新加载Qlik Enterprise任务?
通过Unix服务器SSH触发Qlik Enterprise任务重新加载
Qlik Enterprise没有专门的Unix命令直接触发任务,通常通过调用**Qlik Sense Repository API(QRS API)**实现,在Unix环境下可借助curl工具完成认证和任务触发操作,具体步骤如下:
前提准备
- 从Qlik Enterprise服务器导出客户端证书包(包含
client.pem、client_key.pem、root.pem三个文件),上传至Unix服务器的指定目录,比如~/.qlik/certs/ - 确认Unix服务器已安装
curl(多数系统默认自带) - 获取目标任务的ID:可在Qlik管理控制台的任务详情页查看,或通过API查询获取
1. 认证并获取会话令牌
通过证书认证调用QRS接口,获取会话令牌并保存为环境变量:
# 导出会话令牌至环境变量 SESSION_TOKEN=$(curl -s -X POST \ --cert ~/.qlik/certs/client.pem \ --key ~/.qlik/certs/client_key.pem \ --cacert ~/.qlik/certs/root.pem \ -D - https://<你的Qlik服务器地址>:4242/qrs/about?xrfkey=abcdefghijklmnop | grep "X-Qlik-Session" | awk '{print $2}' | tr -d '\r\n')
说明:xrfkey是Qlik API要求的防伪造密钥,任意16位字符串即可
2. 触发任务重新加载
使用获取到的会话令牌调用任务启动接口,替换<任务ID>为你的目标任务ID:
curl -X POST \ --cert ~/.qlik/certs/client.pem \ --key ~/.qlik/certs/client_key.pem \ --cacert ~/.qlik/certs/root.pem \ -H "X-Qlik-Session: $SESSION_TOKEN" \ -H "X-Qlik-Xrfkey: abcdefghijklmnop" \ https://<你的Qlik服务器地址>:4242/qrs/task/<任务ID>/start?xrfkey=abcdefghijklmnop
请求成功会返回200状态码,任务随即开始执行。
可选:查询任务执行状态
如需确认任务执行结果,可调用状态查询接口:
curl -X GET \ --cert ~/.qlik/certs/client.pem \ --key ~/.qlik/certs/client_key.pem \ --cacert ~/.qlik/certs/root.pem \ -H "X-Qlik-Session: $SESSION_TOKEN" \ -H "X-Qlik-Xrfkey: abcdefghijklmnop" \ https://<你的Qlik服务器地址>:4242/qrs/task/<任务ID>/executionresult?xrfkey=abcdefghijklmnop
注意事项
- 确保Unix服务器能访问Qlik服务器的4242端口(QRS API默认端口)
- 证书文件权限需设置为仅当前用户可读:
chmod 600 ~/.qlik/certs/*.pem - 若Qlik服务器启用OAuth等其他认证方式,需调整认证步骤,但证书认证是命令行场景下最便捷的方式
内容的提问来源于stack exchange,提问作者Antonio Silvestri
相关产品推荐
相关产品推荐

