Greenplum運維繫統開發二三事

    前不久剛接觸Greenplum的工作,由於每天都要進行很多重複操作,就抽空寫了個Greenplum運維繫統,其本質就是與Linux交互,執行一些常見的重複操作命令。因爲一些代碼是參考別的大佬文章,就直接貼文章地址。最終頁面像下面這樣:

      

    其中涉及到兩個關鍵點,這裏簡單記錄一下,包括:

        1) 遠程執行Linux命令(執行正常的腳本或命令、執行nohup命令)

        2) Linux交互命令執行(切換用戶執行命令、scp、從一臺主機ssh到其它主機等)

   1、遠程執行Linux命令之執行常用命令或腳本

    要想實現Linux運維,遠程登錄Linux系統,並執行命令是萬里長征第一步。用的Java的ganymed-ssh2插件,可以參考下面的文章:Java 遠程執行 Linux 的命令java遠程調用linux的命令或者腳本。想一次執行多個命令,直接搜這個插件的文章有很多。

    2、遠程執行Linux命令之執行nohup命令

   之所以單獨說明nohup的執行,是因爲中間遇到了執行nohup命令不生效的問題,百度了很多文章改環境變量啥的都不管用。後來參考這篇文章:Ganymed_SSH2執行執行nohup命令失敗,直接改代碼,新增了執行nohup命令的函數。

    3、執行Linux交互命令之expect

    開發後來遇到了兩個問題:

    1) 系統中有些操作需要root用戶執行,這時需要su -切換,然後再輸入命令。

    2) 因爲集羣內的Segment節點只有私網IP,只能通過Master節點ssh過去,而前面的方法只能登陸到Master節點,簡單執行命令後獲取返回結果,無法交互執行。比如:在Master節點ssh、scp之後要輸入密碼等等。

    然後發現了一個神奇的工具-expect,可以事先寫好腳本,然後和linux交互執行。我這裏用它主要做了幾件事:Master節點ssh到Segment節點、Master節點和Segment節點拷貝內容、掛載NFS。

    文章我也找不到參考的那個了,找了個比較全的:linux交互執行命令,expect

    注意:如果expect默認10s超時,如果執行久的命令,可以set timeout -1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章