Thanks for your advise and suggestions. It may has some exceptions if I 
implement SSH Task as you said. Now, let me explain my ideas.


e.g


My workflow DAG has 100 or more task, it's all ssh task. I have  two 
questions.


1??We must limit SSH connection and reuse the SSH connections, otherwise the 
remote server will be refused.


2??If we config all of these task, we have a lot of repeat work to do.


By the way, the way I'm currently verifying is I use local params to config the 
remote server's host,user,password


------------------ ???????? ------------------
??????:&nbsp;"lidong dai"<[email protected]&gt;;
????????:&nbsp;2020??5??20??(??????) ????10:56
??????:&nbsp;"dev"<[email protected]&gt;;

????:&nbsp;Re: [Feature] Support SSH Task



hi, I see you will Jsch, does his license compitable with apache v2
license, I see the following words "
JSch 0.0.* was released under the GNU LGPL license. Later, we have switched
over to a BSD-style license.
" on https://github.com/is/jsch/blob/master/LICENSE.txt . you know, LGPL
license not compitable with apache license. but BSD is ok , so the version
of Jsch is key point

second, Connection Pool is heavy resource, Please use carefully

and I'm a little confused, why there must be add a new Table,&nbsp; other task
types also no seperate table,&nbsp; could you consider task_type and task_json
in t_ds_task_instance ?



Best Regards
---------------
DolphinScheduler(Incubator) PPMC
Lidong Dai ??????
[email protected]
---------------


?????? <[email protected]&gt; ??2020??5??20?????? ????9:57??????

&gt; I want to describe my idea.
&gt;
&gt;
&gt; First, we must design a host table that's named t_ds_ssh_host, e.g
&gt;
&gt;
&gt; - id
&gt; - name
&gt; - ip / host
&gt; - user
&gt; - password
&gt; - max_connection
&gt; - create_time
&gt; - update_time
&gt; - user_id
&gt;
&gt;
&gt; Second, Shell can execute in worker server or remote host. We can choose a
&gt; host in host's list.
&gt;
&gt;
&gt; Third, when workflow running, we must maintain the remote host's
&gt; connection pool.
&gt;
&gt;
&gt; Finally, when workflow finish, we must release the connection pool.
&gt;
&gt;
&gt; Why do we have to maintain a connection pool. Because it is very easy to
&gt; get exceptions when it's has many SSH task.
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;????????&amp;nbsp;------------------
&gt; ??????:&amp;nbsp;"lidong dai"<[email protected]&amp;gt;;
&gt; ????????:&amp;nbsp;2020??5??20??(??????) ????7:12
&gt; ??????:&amp;nbsp;"dev"<[email protected]&amp;gt;;
&gt;
&gt; ????:&amp;nbsp;Re: [Feature] Support SSH Task
&gt;
&gt;
&gt;
&gt; glad to hear that you will implement this feature
&gt;
&gt;
&gt;
&gt; Best Regards
&gt; ---------------
&gt; DolphinScheduler(Incubator) PPMC
&gt; Lidong Dai ??????
&gt; [email protected]
&gt; ---------------
&gt;
&gt;
&gt; ?????? <[email protected]&amp;gt; ??2020??5??20?????? ????3:47??????
&gt;
&gt; &amp;gt; My code is not perfect yet. I will write a detailed design 
document.
&gt; Then
&gt; &amp;gt; I will realize this feature about our discussion result.
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 
------------------&amp;amp;nbsp;????????&amp;amp;nbsp;------------------
&gt; &amp;gt; ??????:&amp;amp;nbsp;"wenhemin"<[email protected]&amp;amp;gt;;
&gt; &amp;gt; ????????:&amp;amp;nbsp;2020??5??18??(??????) ????7:50
&gt; &amp;gt; ??????:&amp;amp;nbsp;"??????"<[email protected]&amp;amp;gt;;"dev"<
&gt; [email protected]
&gt; &amp;gt; &amp;amp;gt;;
&gt; &amp;gt;
&gt; &amp;gt; ????:&amp;amp;nbsp;Re: [Feature] Support SSH Task and Support 
dummy task
&gt; like airflow
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; Thanks for writing detailed documentation. I think this is also a
&gt; missing
&gt; &amp;gt; feature of DS.
&gt; &amp;gt; About the extension point:
&gt; &amp;gt; 1.Can ssh tasks be merged into shell tasks. Essentially, they all
&gt; execute
&gt; &amp;gt; shell commands.
&gt; &amp;gt; 2.About dummy task, DS has the function of disable nodes, I do 
n??t
&gt; know if
&gt; &amp;gt; this requirement is met.
&gt; &amp;gt;
&gt; &amp;gt; The script from AirFlow to Dolphin is great.
&gt; &amp;gt;
&gt; &amp;gt; &amp;amp;gt; ?? 2020??5??18????09:28???????? 
<[email protected]&amp;amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; OK, 3Q!
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; First, I will ensure that open source can use.
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; Second, I think we must discuss deeply. I write a 
more
&gt; detailed
&gt; &amp;gt; document. You can check the attachment. I also send the document 
to
&gt; &amp;gt; DaiLidong.
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; Third,&amp;amp;nbsp; I'll give you the error of not 
using SSH
&gt; connection pool.
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; ------------------ ???????? ------------------
&gt; &amp;gt; &amp;amp;gt; ??????: "wenhemin"<[email protected]&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt; ????????: 2020??5??14??(??????) ????7:26
&gt; &amp;gt; &amp;amp;gt; ??????: "??????"<[email protected]&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt; ????: Re: [Feature] Support SSH Task and Support 
dummy task
&gt; like airflow
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; Great!
&gt; &amp;gt; &amp;amp;gt; I think, Can ssh tasks be merged into shell 
tasks,&amp;amp;nbsp;
&gt; execute
&gt; &amp;gt; script locally or remotely, Configure on the front end.
&gt; &amp;gt; &amp;amp;gt; About ssh connect pool, I did not find it necessary 
to use
&gt; the
&gt; &amp;gt; connection pool.
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; BTW, Look at the code to introduce additional jar 
packages,
&gt; You also
&gt; &amp;gt; need to ensure that open source can use the license of this jar
&gt; package.
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ?? 2020??5??14????16:20???????? 
<[email protected] <mailto:
&gt; [email protected]&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 1. The priority between these tasks is 
also depended
&gt; on the
&gt; &amp;gt; dolphin DAG define. When the front task is not finished, it not
&gt; execute
&gt; &amp;gt; next task.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 2. I extend ssh task. I also use local 
params to
&gt; config ssh host,
&gt; &amp;gt; user and password.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; E.g:
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; public static AbstractTask
&gt; newTask(TaskExecutionContext
&gt; &amp;gt; taskExecutionContext, Logger logger)
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 throws
&gt; IllegalArgumentException {
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; Boolean 
enable =
&gt; &amp;gt;
&gt; 
JSONUtils.parseObject(taskExecutionContext.getTaskParams()).getBoolean("enable");
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; if (enable 
!= null
&gt; &amp;amp;amp;&amp;amp;amp; enable == false ) {
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 return new
&gt; &amp;gt; DummyTask(taskExecutionContext, logger);
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; }
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; switch
&gt; &amp;gt;
&gt; (EnumUtils.getEnum(TaskType.class,taskExecutionContext.getTaskType())) {
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case SHELL:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; ShellTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case
&gt; PROCEDURE:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; ProcedureTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case SQL:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; SqlTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case MR:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; MapReduceTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case SPARK:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; SparkTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case FLINK:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; FlinkTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case PYTHON:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; PythonTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case HTTP:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; HttpTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case DATAX:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; DataxTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case SQOOP:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; SqoopTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 case SSH:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; return new
&gt; &amp;gt; SSHTask(taskExecutionContext, logger);
&gt; &amp;gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
 default:
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; logger.error("unsupport task
&gt; &amp;gt; type: {}", taskExecutionContext.getTaskType());
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; throw new
&gt; &amp;gt; IllegalArgumentException("not support task type");
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; }
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; }
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 3. I am not sure that it supports window 
or not.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ------------------ ???????? 
------------------
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ??????: "wenhemin"<[email protected] 
<mailto:
&gt; [email protected]&amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ????????: 2020??5??14??(??????) ????3:46
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ??????: "??????"<[email protected] 
<mailto:[email protected]
&gt; &amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; ????: Re: [Feature] Support SSH Task and 
Support dummy
&gt; task like
&gt; &amp;gt; airflow
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; Sorry, My previous description is not 
very clear.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; I want to ask some questions:
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 1.How to control the priority between 
ssh tasks?
&gt; There may be
&gt; &amp;gt; some ssh tasks that have been waiting for execution.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 2.I understand what you want to solve is 
the problem
&gt; of executing
&gt; &amp;gt; remote ssh scripts in batches.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; So, not sure 
how to use this
&gt; function.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt; 3.I don't know if this supports windows 
system.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ?? 
2020??5??13????20:56???????? <[email protected]
&gt; <mailto:
&gt; &amp;gt; [email protected]&amp;amp;gt;&amp;amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; I use spin lock. Here is my 
code. Of course
&gt; , it's not
&gt; &amp;gt; perfect. I just do a test. To my surprise, it is the result of the
&gt; &amp;gt; execution is the same as the AirFlow
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; 
????????????????????????????????????????????????????????????????????????????????????????????????????????
 AirFlow
&gt; &amp;gt; ????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ------------------ ???????? 
------------------
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ??????: 
"whm_777"<[email protected] <mailto:
&gt; [email protected]
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ????????: 
2020??5??13??(??????) ????7:21
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ??????: 
"??????"<[email protected] <mailto:
&gt; [email protected]&amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ????: Re: [Feature] Support 
SSH Task and
&gt; Support dummy task
&gt; &amp;gt; like airflow
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; You can modify the maximum 
number of linux
&gt; ssh connections.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; If use ssh connection pool, 
How to control
&gt; the priority of
&gt; &amp;gt; ssh?
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ?? 
2020??5??13????18:01???????? <
&gt; [email protected] <mailto:
&gt; &amp;gt; [email protected]&amp;amp;gt;&amp;amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; First 3Q??
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; I&amp;amp;nbsp; 
use more than 100 task
&gt; node. But SSH connections
&gt; &amp;gt; are limited.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt;
&gt; 
??????????100??????????????????????SSH????????????????????????????????????????????????SSH??????????????????????????????DAG??????AirFlow????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
<[email protected]
&gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
------------------ ????????
&gt; ------------------
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ??????: 
"whm_777"<[email protected]
&gt; <mailto:[email protected]
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ????????: 
2020??5??13??(??????) ????5:50
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ??????: 
"??????"<[email protected] <mailto:
&gt; [email protected]
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ????: Re: 
[Feature] Support SSH Task
&gt; and Support dummy task
&gt; &amp;gt; like airflow
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; E.g.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; rtn_code=`ssh -o
&gt; ServerAliveInterval=60 -p xxxx
&gt; &amp;gt; [email protected] <mailto:[email protected]&amp;amp;gt; 
??shell
&gt; &amp;gt; command&amp;amp;nbsp; &amp;amp;gt;/dev/null 
2&amp;amp;gt;&amp;amp;amp;1; echo $?'`
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; if [ "$rtn_code" 
-eq 0 ]; then
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; echo "????"
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; exit 0
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; else
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; echo "????"
&gt; &amp;gt;
&gt; 
&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; exit 1
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; fi
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; Batch shell 
command is not supported.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; Multiple servers 
can be split into
&gt; multiple task nodes.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ?? 
2020??5??13????17:40???????? <
&gt; [email protected] <mailto:
&gt; &amp;gt; [email protected]&amp;amp;gt;&amp;amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
Could you give me a
&gt; example??3Q. ????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; By 
the way, I have more than
&gt; 100 tasks in one DAG.
&gt; &amp;gt; These tasks connect two other server to execute. So SSH tasks must
&gt; have
&gt; &amp;gt; pool to manager. Now I use JSch and realize a simple pool.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
??????????????????????????????????100???? SSH
&gt; ??????????????????????????????????????????????????
&gt; &amp;gt; SSH ?????????????????????????????????????????????????? 
JSch????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
------------------ ????????
&gt; ------------------
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
??????: "wenhemin"<
&gt; [email protected] <mailto:
&gt; &amp;gt; [email protected]&amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
????????: 2020??5??13??(??????) ????5:24
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
??????: "dev"<
&gt; [email protected] <mailto:
&gt; &amp;gt; [email protected]&amp;amp;gt;&amp;amp;gt;;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
????: Re: [Feature] Support
&gt; SSH Task and Support dummy
&gt; &amp;gt; task like airflow
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; The 
shell node is supports
&gt; remote calling, and get
&gt; &amp;gt; the remote command result code.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; ??
&gt; 2020??5??13????15:16???????? <[email protected]
&gt; &amp;gt; <mailto:[email protected]&amp;amp;gt;&amp;amp;gt; ??????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Dear ALL??
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Support Linux SSH
&gt; Task ???? Linux SSH ????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; ???????????????????????????????????????????????????????? Shell ??????Shell
&gt; &amp;gt; ???????????????????????????????????? Worker 
???????????????????????????????????????????????????? Shell
&gt; &amp;gt; ??????????????????????????????????????????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; For example, in my
&gt; project, the workflow's tasks
&gt; &amp;gt; want to execute shell scripts where are in different server's
&gt; different
&gt; &amp;gt; directory. When worker execute these shell scripts, it must use 
the
&gt; same
&gt; &amp;gt; user to login these server. Also, the worker can get the executing
&gt; state of
&gt; &amp;gt; these server. We can config these server 's host,user and 
password.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; SSH Task is very
&gt; useful for most user SSH
&gt; &amp;gt; ????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; ?????????????????????? Shell
&gt; &amp;gt; ???????????????????????????????????????????????????????????????? 
Worker?????????? Worker
&gt; &amp;gt; ??????????????????????????????????????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; In
&gt; dolphinscheduler, the most executing tasks
&gt; &amp;gt; are in different servers who are not workers. These servers also 
have
&gt; their
&gt; &amp;gt; different fixed services. We just have to pass different 
parameters to
&gt; &amp;gt; schedule these shell scripts to execute.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Python has a module
&gt; to execute ssh script Python
&gt; &amp;gt; ??????????????????????????SSH Shell ????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Python
&gt; ??????????????????????SSH Shell??????????????????????paramiko??
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Python has a module
&gt; that can execute SSH Shell
&gt; &amp;gt; script. It's paramiko.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Others ????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; ????????????????????????????????????????????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; I found this
&gt; described in previous feature, but
&gt; &amp;gt; it was relatively simple.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Feature URL
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; ???????????? Shell Task
&gt; &amp;gt; 
??????????????????????????????????????????????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; In addition, it is
&gt; very inconvenient for me to
&gt; &amp;gt; perform remote tasks through Shell Task. Here is my script. I 
don't
&gt; know if
&gt; &amp;gt; there's a better way.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; sshpass -p
&gt; 'password' ssh user@host echo 'ssh
&gt; &amp;gt; success' echo 'Hello World' -&amp;amp;amp;gt;
&gt; /home/dolphinscheduler/test/hello.txt
&gt; &amp;gt; echo 'end'
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Support dummy task
&gt; like airflow ?????? Airflow
&gt; &amp;gt; ????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; ????????????????????????????????
&gt; DAG ??????DAG
&gt; &amp;gt; 
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
&gt; Dummy
&gt; &amp;gt;
&gt; 
Task????????????????????????????????????????????????????????????????????????AirFlow??????????????DummyOperator????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; For example, in my
&gt; project, it has a productized
&gt; &amp;gt; DAG file. The file contains different modules, some of which are
&gt; &amp;gt; interdependent and some of which are not. When customers purchase
&gt; different
&gt; &amp;gt; modules, we need to set some tasks as dummy tasks, which some 
modules
&gt; are
&gt; &amp;gt; not purchased and the purchased module is not dependent. Because 
of
&gt; this
&gt; &amp;gt; setting, these dummy tasks are actually not executed. The 
benefits of
&gt; this
&gt; &amp;gt; setup are product unity and diagram integrity. In airflow, these 
task
&gt; &amp;gt; execute by dummy operator.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; ** Realize ????????**
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Dummy Task
&gt; ????????????????????????????????????????????????????????????????
&gt; &amp;gt; dummy ?????????????????????????? Dummy Task??
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; Dummy Task is easy
&gt; to realize, but it need to
&gt; &amp;gt; use with other different tasks. When the task's executed type is 
set
&gt; to
&gt; &amp;gt; dummy type, the task are executed as a dummy task and the real 
task
&gt; is not
&gt; &amp;gt; executed.
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; 
????????????????????????????????????Fork??????????????????????????????????????????????????????????
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 
&amp;amp;gt; By the way??I
&gt; already realize these two&amp;amp;amp;nbsp;
&gt; &amp;gt; features in my fork branch.&amp;amp;amp;nbsp;Whether the follow-up
&gt; release can be
&gt; &amp;gt; supported
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;
&gt; 
<SSHClient.java&amp;amp;gt;<SSHPool.java&amp;amp;gt;<SSHTask.java&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;&amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; <??????????????Dolphin????????????.pdf&amp;amp;gt;

Reply via email to