There is only two ways that I can think to do about this.

1. Simple SSH connect pool
2. Control the number of task's concurrent


------------------ ???????? ------------------
??????:&nbsp;"Hemin Wen"<[email protected]&gt;;
????????:&nbsp;2020??5??22??(??????) ????7:29
??????:&nbsp;"dev"<[email protected]&gt;;

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



What other friends think about this discuss


--------------------
DolphinScheduler(Incubator) Commtter
Hemin Wen&nbsp; ??????
[email protected]
--------------------


?????? <[email protected]&gt; ??2020??5??22?????? ????10:20??????

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

Reply via email to