亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 61978 | 回復(fù): 0
打印 上一主題 下一主題

taskctl命令行類(sh、exe、python新增scp)插件升級擴展 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2017-11-10 14:20 |只看該作者 |倒序瀏覽
本帖最后由 ffw_880106 于 2017-11-10 14:33 編輯

轉(zhuǎn)載自 : http://www.taskctl.com/forum/detail_129.html
    上次寫了一個帖子 TASKCTL中不使用代理,通過ssh免密連接執(zhí)行遠程腳本配置(SSH插件擴展)http://www.taskctl.com/forum/detail_122.html 。寫完后發(fā)現(xiàn),其實在原本的sh作業(yè)類型上改造一下就可以了,同時延伸到以前是用command執(zhí)行方式的作業(yè)類型,都可以適當擴展,命令行類插件升級20171110.rar就是 sh、exe、python的插件和新增拷貝一些小文件的scp作業(yè)類型。插件中主要使用的ssh免密及其相關(guān)的幾個參數(shù)和bash的幾種模式,這個只是一個基礎(chǔ)版本,如果有特殊的需求基于上面的插件改造一下就可以了。下面是摘抄了原網(wǎng)頁上寫法寫的一個sh腳本的擴展,其他幾個類似。
使用TASKCTL調(diào)度服務(wù)時,如果需要跨用戶或者跨服務(wù)器調(diào)度可以通過安裝taskctl的代理來實現(xiàn),但有時需要執(zhí)行作業(yè)的服務(wù)器上僅僅只有幾個腳本或者一兩個可執(zhí)行程序,此時再部署代理,就顯得有點得不償失了。我們知道TASKCTL支持任意作業(yè)類型的擴展,所以我們是不是可以考慮通過SSH遠程連接來擴展這些插件,使其能執(zhí)行這些遠程少量的腳本程序。
    下面是通過擴展TASKCTL用ssh連接來支持調(diào)度遠程作業(yè)的步驟,一方面解決一些朋友迫切的調(diào)度需求,另一方面拋磚引玉,讓大家能夠在TASKCTL中擴展更多的適應(yīng)自己需求的作業(yè)插件。
    下面編寫的過程參照 http://www.taskctl.com/forum/detail_33.html
    1、首先在服務(wù)端的$TASKCTLDIR/src/plugin/sh/shell/目錄中新增cprunsh.sh作業(yè)插件,實際上就是一個shell程序,代碼如下:
  1. #!/bin/sh
  2. #------------------------------------------------------------------------------
  3. #        功能: [ssh方式]執(zhí)行[遠程]Shell腳本驅(qū)動插件程序
  4. #
  5. #        更新日志:20171030 由最開始的集成轉(zhuǎn)換為插件,增強擴展原只能執(zhí)行當前用戶可讀的 shell 腳本,
  6. #        通過ssh協(xié)議,在免密的情況下可以執(zhí)行本機不同用戶和非本機的其他用戶
  7. #
  8. #        參數(shù):
  9. #        1. progname 腳本的全路徑名稱
  10. #        2. para 腳本的入口參數(shù),格式為 para1 para2 ...
  11. #        3. exppara 對應(yīng)相應(yīng)腳本的exppara屬性,為腳本文件所在用戶,當該參數(shù)為空時,默認為當前用戶,如果不是當前用戶時,為遠程連接IP地址和用戶名
  12. #        sip=172.22.1.1 ssh遠程IP地址
  13. #        sport=9527 ssh遠程連接端口
  14. #        suser=taskctl ssh遠程用戶
  15. #        返回值: 腳本執(zhí)行后的實際返回值
  16. #       
  17. #        流程模式代碼任務(wù)定義舉例:
  18. #        1、默認2個輸入?yún)?shù)的安裝用戶可執(zhí)行的服務(wù)器上的sh腳本(如果參數(shù)多個,以此類推)
  19. #        <sh>
  20. #        <name>job1</name>
  21. #        <progname>/home/taskctl/test.sh</progname>
  22. #        <para>para1 para2</para>
  23. #        </sh>
  24. #        2、在同一臺服務(wù)器上的其他用戶可執(zhí)行,當前節(jié)點安裝用戶不可執(zhí)行sh腳本,當前用戶和目標用戶做了ssh免密(如果參數(shù)多個,以此類推)
  25. #        <sh>
  26. #        <name>job1</name>
  27. #        <progname>/home/username/test.sh</progname>
  28. #        <para>para1 para2</para>
  29. #        <exppara>[sport=22,]suser=taskctl</exppara>
  30. #        </sh>
  31. #        3、不同服務(wù)器上,但都是shell作業(yè),當前節(jié)點安裝用戶已經(jīng)做了ssh免密(如果參數(shù)多個,以此類推)
  32. #        <sh>
  33. #        <name>job1</name>
  34. #        <progname>/home/username/test.sh</progname>
  35. #        <para>para1 para2</para>
  36. #        <exppara>sip=172.22.1.1,[sport=22,]suser=taskctl</exppara>
  37. #        </sh>
  38. #
  39. #------------------------------------------------------------------------------

  40. if [ $# -ne 3 ]
  41. then
  42. echo "Param error !"
  43. echo "Usage: $0 progname para expara"
  44. exit 126
  45. fi

  46. #------------------------------------------------------------------------------
  47. # 第一步: 接收參數(shù)
  48. #------------------------------------------------------------------------------
  49. ProgName=$1
  50. Para=$2
  51. ExpPara=$3

  52. #------------------------------------------------------------------------------
  53. # 第二步: 解析 exppara
  54. #------------------------------------------------------------------------------
  55. function getValue(){
  56. if [ $# -ne 2 ]
  57. then
  58. echo "......."
  59. exit 1
  60. fi

  61. str=`echo $2|awk -v record=$1 'BEGIN {
  62. split(record,myarray,",");

  63. }
  64. END{
  65. for (i in myarray){
  66. if (myarray[i]~$1){
  67. if ( index(myarray[i],$1) == 1){
  68. print myarray[i];
  69. break;
  70. }
  71. }
  72. }
  73. }
  74. '`
  75. echo $str|awk -F"=" '{print $2}'
  76. }

  77. ExpPara=`echo $ExpPara` #此處為了去前后空格,以便判斷是否真正有入口參數(shù)
  78. #通過判斷 exppara 是否為空,決定是直接執(zhí)行sh還是走ssh通道
  79. #直接執(zhí)行
  80. if [ ! -n "$ExpPara" ]
  81. then
  82. sh $ProgName $Para
  83. ret=$?
  84. exit $ret
  85. fi
  86. #走ssh通道
  87. sip=`getValue $ExpPara sip`
  88. #通過判斷 sip 是否為空,決定是直接執(zhí)行本機其他用戶還是遠程服務(wù)器上的sh腳本
  89. if [ ! -n "$sip" ]
  90. then
  91. sip=localhost
  92. fi
  93. #sport=`getValue $ExpPara sport` #默認沒有修改端口 傳參數(shù)的時候也沒有傳 先屏蔽
  94. sport=22
  95. suser=`getValue $ExpPara suser`

  96. #------------------------------------------------------------------------------
  97. # 第三步: 檢測是否配置了ssh免密連接
  98. #------------------------------------------------------------------------------
  99. ssh -o ConnectTimeout=5 -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -p $sport $suser@$sip 'pwd' &>/dev/null
  100. if [ $? != 0 ];then
  101. echo -e "\nSSH Connection failed $sip"
  102. echo -e "\nssh-keygen -t rsa -P ''"
  103. echo -e "\nssh-copy-id -p $sport $suser@$sip"
  104. exit 1
  105. else
  106. echo -e "\nSSH connection succeeded $sip"
  107. fi

  108. #------------------------------------------------------------------------------
  109. # 第四步: 運行JOB,并返回結(jié)果
  110. #------------------------------------------------------------------------------
  111. #echo "ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -p $sport $suser@$sip bash --login $ProgName $Para" #此處為打印執(zhí)行命令行,以便調(diào)試判斷是否真正有入口參數(shù)
  112. ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -p $sport $suser@$sip "bash --login $ProgName $Para"
  113. ret=$?
  114. exit $ret
復(fù)制代碼

    2、在桌面軟件admin中進入"任務(wù)類型"功能中,設(shè)置ssh作業(yè)類型,如下圖所示:
    3、在桌面軟件designer中設(shè)計 sh 作業(yè)如下代碼片段:
  1. <!-- 按插件的規(guī)則編寫的流程設(shè)置 -->
  2. <sh>
  3. <name>MainModul_JobNode0</name>
  4. <progname>/home/cdchen/successjob.sh</progname>
  5. <para>para1 para2</para>
  6. <exppara>sip=192.168.0.192,suser=cdchen</exppara>
  7. <jobdesc>測試遠程sh作業(yè)</jobdesc>
  8. </sh>
復(fù)制代碼
    4、調(diào)試測試作業(yè)是否符合預(yù)期


您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP