我有一个python脚本test2.py来连接到远程服务器并执行该命令。如下所示。这在命令行上有效。
将参数作为JSON传递并以JSON格式获取响应,这在命令行中执行时会起作用,如下所示。
python3.6 test2.py '{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}'我正试着通过气流来执行同样的操作
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)我看到下面的错误与语法有关。
cmd_command = "python3.6 /root/test2.py '{{"hostname": "<server>", "username":"<test>", "password":"<test1>", "command1":"hostname"}}'"
^
SyntaxError: invalid syntax你能帮帮我吗
谢谢
发布于 2020-07-17 20:29:27
JSON使用双引号,但Python将它们解释为字符串的开头或结尾。解决这个问题的一种方法是在JSON中转义双引号:
cmd_command = "python3.6 /root/test2.py '{\"hostname\": \"<server>\", \"username\":\"<test>\", \"password\":\"<test1>\", \"command1\":\"hostname\"}'"https://stackoverflow.com/questions/62953435
复制相似问题