首页 > 解决方案 > 如何使用气流的 SSH 操作符运行带有参数的 shell 脚本

问题描述

我正在尝试使用气流在远程系统中运行 Pentaho 作业。我能够使用气流的 SSH 操作符通过 SSH 连接到远程系统并运行 shell 脚本,但我想知道如何将参数传递给 shell 脚本。

例如,shell 命令看起来像

sh -C "$PENT_HOME"/kitchen.sh -file="$PENT_HOME/Details.kjb" -level=Basic > $logFolder/ date -u +"%Y-%m-%dT%H:%M:%SZ"-Details.log 2>&1

我用于运行不带参数的简单 shell 脚本的 DAG 脚本是

t1 = SSHOperator(ssh_conn_id='SSH-dev',
    task_id='ssh_operator',
    command='/opt/scripts/test.sh ',
    dag=dag)

标签: airflow

解决方案


command参数接受任何 bash/shell 命令,因此您可以这样做,例如:

t1 = SSHOperator(ssh_conn_id='SSH-dev',
    task_id='ssh_operator',
    command='/opt/scripts/test.sh arg1 arg2',
    dag=dag)

在你的情况下:

t1 = SSHOperator(ssh_conn_id='SSH-dev',
    task_id='ssh_operator',
    command='bash "$PENT_HOME"/kitchen.sh -file="$PENT_HOME/Details.kjb" -level=Basic > $logFolder/date -u +"%Y-%m-%dT%H:%M:%SZ"-Details.log 2>&1',
    dag=dag)

推荐阅读