Good idea! It's can solve the exceptions where the numbers of SSH connections exceeds.
We also have another problem of how to config remote server easily when we have hundreds of tasks. Now I use the local param to config remote server's IP,username,password. But every task needs to config. ------------------ ???????? ------------------ ??????: "lidong dai"<[email protected]>; ????????: 2020??5??26??(??????) ????6:38 ??????: "dev"<[email protected]>; ????: Re: [Feature] Support SSH Task good idea, I think "Control the number of task's concurrent" may be have some other methods, for now, we don't have this feature, but when I communicate with the team of China Unicom?? they provide a new solve solution?? we can add a task concurrent page, you can set a variable value like 'ETL_JOB' =10 and so on, then give the task type add a option for choosing ETL_JOB or other variable, and there may be many task also choose ETL_JOB variable. when these tasks begin to running at the same time, the Master Server will check whether a task begin to run or wait(if the running tasks num = 10) Best egards --------------- DolphinScheduler(Incubator) PPMC Lidong Dai ?????? [email protected] --------------- ?????? <[email protected]> ??2020??5??26?????? ????2:34?????? > 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;????????&nbsp;------------------ > ??????:&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;
