通过bash操作符执行python脚本

通过bash操作符执行python脚本,python,python-3.x,airflow,Python,Python 3.x,Airflow,我有一个python脚本test2.py来连接到远程服务器并执行命令。如下。这在命令行上起作用 python3.6 test2.py '{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname

我有一个python脚本test2.py来连接到远程服务器并执行命令。如下。这在命令行上起作用

python3.6 test2.py  '{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}'
以JSON的形式传递参数,并以JSON的形式获取响应。当在命令行中按如下方式执行时,这种方法有效

python3.6 test2.py  '{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}'
python3.6test2.py'{“主机名”:“用户名”:“密码”:“命令1”:“主机名”}
我试图通过气流执行相同的操作

from __future__ import print_function
from airflow.operators import BashOperator
from airflow.models import DAG
from datetime import datetime, timedelta


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 9, 1),
    'email_on_failure': False,
    'email_on_retry': False,
    'schedule_interval': '@daily',
    'retries': 1,
    'retry_delay': timedelta(seconds=5),
}

dag = DAG(
    dag_id='DAG-3',
    default_args=default_args,
    dagrun_timeout=timedelta(minutes=10)
    )

cmd_command = "python3.6 /root/test2.py '{{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}}'"


t = BashOperator(
     task_id = 'some_id',
     bash_command = cmd_command,
     dag = dag)
 
from\uuuuu future\uuuuu导入打印功能
从afflow.operators导入bash操作符
从airflow.models导入DAG
从datetime导入datetime,timedelta
默认参数={
“所有者”:“气流”,
“依赖于过去”:False,
“开始日期”:日期时间(2018年9月1日),
“失败时发送电子邮件”:False,
“重试时发送电子邮件”:False,
“计划时间间隔”:“@daily”,
“重试”:1,
“重试延迟”:timedelta(秒=5),
}
dag=dag(
dag_id='dag-3',
默认参数=默认参数,
dagrun\u超时=时间增量(分钟=10)
)
cmd_command=“python3.6/root/test2.py”{{{“主机名”:“用户名”:“密码”:“命令1”:“主机名”}”
t=bash算子(
task_id='some_id',
bash_命令=cmd_命令,
dag=dag)
我看到以下与语法有关的错误

cmd_command = "python3.6 /root/test2.py '{{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}}'"
                                                       ^
SyntaxError: invalid syntax
cmd_command=“python3.6/root/test2.py'{{{“主机名”:”“用户名”:”“密码”:”“命令1”:“主机名”}”
^
SyntaxError:无效语法
你能帮忙吗


谢谢

您对JSON使用了双引号,但Python将它们解释为字符串的开始或结束。解决此问题的一种方法是在JSON中转义双引号:

cmd_command = "python3.6 /root/test2.py '{\"hostname\": \"<server>\", \"username\":\"<test>\", \"password\":\"<test1>\", \"command1\":\"hostname\"}'"
cmd\u command=“python3.6/root/test2.py”{“hostname\”:\“\”,\“username\”:\“\”,\“password\”:\“\”,\“command1\”:“hostname\””