历史版本4 :Shell脚本 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本说明

FineDataLink 版本
功能变动
4.0.8-

1.2 应用场景

用户希望在 FineDataLink 中调用Kettle任务、调用Python计算任务,或者进行数据库备份还原等操作。

1.3 功能说明

FineDataLink 支持通过执行 shell 脚本,对接外部的独立数据处理过程。

如SVN更新、文件运维清理、调用Kettle任务、调用Python计算任务、调用Spark计算任务、执行数据库备份还原等。

同时支持使用脚本参数。

2. 前提条件编辑

由于需要在目标服务器执行指定Shell脚本,因此需要首先通过 SSH 远程连接至目标服务器。

进入 FineDataLink 后,点击「管理系统>数据连接>数据连接管理,点击「新建数据连接选择「SSH协议」如下图所示:

输入数据连接名称、主机名称、端口、用户名、密码,并点击测试连接,连接成功,点击「保存」,如下图所示:

连接信息如下所示:

配置项
说明
SSH连接名称

填写SSH连接名称。

默认值重名时,追加递增的数字后缀,如「SSH连接1」。

主机名称

填写SSH的远程主机名。

如:192.168.1.123

端口

填写SSH端口。

数值范围(0,65535]。

用户名填写SSH用户名。
密码填写SSH密码。

3. 操作示例编辑

本文以通过 FineDataLink Shell 脚本调用 Python 任务为例为用户做说明。

某调用 Python 任务的 Shell 脚本将 JSON 格式数据(数据内容为姓名、年龄、身高等基本信息)进行解析,同时有参数 $2(通过传递参数调用json数据 f ),需要通过 FineDataLink 传递参数并执行该 Shell 脚本,将数据结果(年龄)输出至 out1.txt。

#!/bin/bash
f='{"status":0,"time":"2020-02-08","datas":[{"name":"Zhangsan","age":18,"heigth":170,"address":"Shenzhen","email":"zhangsan@google.com"},{"name":"Lisi","age":20,"heigth":185,"address":"Nanjing","email":"lisi@google.com"}]}'
function GetPersonAgeFromResp() {
      (
       local name=$1
       echo "import sys,json" 
       echo "x=0;datas=json.loads('$2').get('datas')" 
       echo "for data in datas:" 
       echo "    if data.get('name') == '$name':" 
       echo "        x=data.get('age');break;"
       echo "print(x)"
     ) | python
    }

GetPersonAgeFromResp 'Lisi' $f >> /mnt/out1.txt
cat /mnt/out1.txt

3.1 设置参数

由于脚本有两个参数,$1 是对 name进行赋值,在脚本中调用 functin 时已经为其进行赋值,因此我们只需要对 $2 进行赋值。

 $2 其实是想通过传递参数调用json数据,也就是脚本开头的 f json数据,因此我们使用参数赋值将满足条件的数据从数据库取出并赋值给 $2。

首先新建「参数赋值」节点,从 type 数据表中取出需要使用的数据作为参数,也就是将type 为 f 的数据取出,如下图所示:

type 数据表全量数据如下图所示:

3.2 设置 Shell 脚本

新建 Shell 脚本,将参数赋值节点和脚本连接,选择需要远程执行任务的目标服务器 SSH 连接位置,写入脚本路径,然后设置脚本参数,点击添加参数,将 3.1 节设置参数 a 添加至脚本参数中,如下图所示:

脚本配置项如下所示:

配置项
说明
SSH连接下拉所有可选的SSH连接。
脚本路径

填写SSH目标端要执行的Shell脚本完整路径。

注1:仅支持Linux系统下后缀名为.sh的脚本文件。

注2:支持引用参数,引用参数示例如下

脚本参数

指定传递给脚本的参数。

注1:脚本参数传入脚本的顺序按照序号自上而下。

注2:脚本参数防止Shell注入。

注3:参数中不能带有单引号,若参数确实需要带有单引号时,通过自定义Shell脚本内的参数使用逻辑来替代实现。


执行超时配置

脚本开始执行到完全执行完毕的超时时间。

  • 默认选择「无限制」

  • 超时时间支持配置范围为0~1000000

字符编码

指定输出字符编码。

支持设置编码格式:

  • UTF-8

  • GBK

  • BIG5

  • ISO-8859-1

3.3 执行任务

点击「保存并运行」,即可执行任务,如下图所示:

执行任务后,即可在脚本设置的输出文件中看到输出结果,即输出了 Lisi 的年龄 20 ,如下图所示: