CheungSSH是一款國人自主研發的Linux運維自動化管理服務器軟件,秉着爲企業下降運營成本,解放管理員雙手和自動化生產的理念,創造的一套開源運維自動化系統。 javascript
ChuengSSH 特色
css
操做簡單,全程Web界面,不須要特定的語法,不須要學習運做原理,即便不懂得Linux的人也能操做,界面全中文,點擊鼠標就能指揮上千臺服務器有序運做 html
功能完備,支持網絡設備,Linux服務器,Windows服務器,命令執行、文件傳輸、批量部署程序、服務器資產信息收集、計劃任務、開放的API等主要功能 前端
易於二次開發,python語言,開源代碼,使用徹底免費 java
簡易,無需安裝任何插件,管理方便,無後患 python
安全無憂,經過Linux自帶的SSH協議管理服務器,通訊安全,無需開啓額外的端口和啓動額外的程序,全部的操做都在CheungSSH控制機上保留,不修改被管理服務器的任何配置數據 git
安全存儲數據,採用Mysql Oracle數據庫 github
管理簡單,無需額外建立任何管理帳號,只須要CheungSSH業務帳號便可,即平時登錄服務器的帳戶。作到無痕操做,不給服務器增長額外負擔 web
效率更高,採用Redis緩存技術,全部的數據都緩存在Redis中,讀取更快速 sql
權限控制,只有受權的操做,才能對現網生產服務器作改動
權限審覈,全部的操做, 均有操做記錄
堡壘機,全部的行動,都由CheungSSH替您執行,安全無憂、更省心、省時
無人值守,基本解放運維人員的上手,解綁運維的生活時間
非法操攔截,如 rm 命令,在沒有被受權狀況下,會被攔截
命令批量執行
腳本批量執行
文件自動上傳
文件自動下載
入計劃任務
自動部署軟件
程序自動同步
被管理服務器資產收集
服務器狀態檢查
技術介紹
代替Vi編輯器的文件編輯
前端:Angulars javascript jQuery ngfileupload scrollbar uigrid typeahead cors Bootstrap
後端 : Django Redis Mysql Oracle SSH paramiko websocket crontab SFTP Cache
模塊架構:
運行架構:
CheungSSH做爲堡壘機角色,替代管理人員對衆多服務器進行管理,解放運維管理員的雙手,而且有相應的審計、權限管理功能
我先自問一句:「什麼是自動化運維?」 ,估計有人會說,一個強大的自動化運維工具。
爲什麼需要自動化?
相信在IT運維的朋友都知道,運維自動化是這兩年才大批的提起自動化?由於雲計算時代來了,公司的服務器規模空前龐大,之前一兩百個機器的時候, 在管理上尚未以爲有什麼,現在, 上千臺服務器,上萬臺服務器,出來了,如何有效的管理這些服務器?成爲了每一個老闆必須面對的問題!
由於服務器多了,公司人手不夠,那麼老闆就不得不請更多的人,可是這樣下來, 老闆有一天發現了,這麼請下去,不是辦法啊,銀子跟水同樣嘩嘩流。因此目前,不少公司都在尋找第三方開發的自動化運維工具,好比puppet,ansible, saltstack等等。由於他們真的是想用這些工具的強大,來代替本身公司人力成本的支出。或者是本身公司請幾個專業的運維開發自行開發一個運維繫統。可是終究避不開一個問題---成本!
什麼又是自動化呢?
我發現,有很多人還在認爲,找一個功能很發達的工具,來管理公司的上千臺服務器,並且還能很靈活的管理,這樣就實現了自動化。在此,我要潑一瓢冷水!
那不叫自動化,由於即使選擇某些功能很發的工具,可是也避不開一個問題----成本!由於學習某些工具,須要大量的時間,並且學習的人,還必須有必定的Linux基礎,甚至是較好的Linux基礎,因此他仍是沒能把成本下降到最低,因此,這樣的狀況, 依然不叫自動化!
由於我以爲請一個精通Linux的人,或者是一個比較熟悉Linux的人,成本都過高了,由於它不比請一個剛大學畢業的人成本更高!難道不是嗎?可是,請一個大學剛剛畢業的人,有幹不了這個事情啊,怎麼辦?
因此,我認爲,在實現強大的功能管理的同事,還能最大限度的下降企業的營運成本,那纔是我心目中的運維聖地------運維自動化!!!
CheungSSH爲何要存在?
就像當年爲何Docs不受歡迎?微軟推出了圖形操做界面後,比爾蓋茨瞬間成爲首富!這是爲何?由於用戶須要的是簡單,再次簡單!不須要學習的系統,才能真正的受歡迎,因此,只須要經過點擊鼠標就能完成操做,這就是 CheungSSH追求的自動化與爲工具!解放企業的生產力!讓CheungSSH成爲您的業務供應鏈的可靠後勤保障系統。
使用CheungSSH目的和帶來的價值
實現運維全自動化,下降企業運營成本!是降到最低!使用CheungSSH,不須要再次學習shell操做,功能倒是完備的。
CheungSSH後續發展
作一個功能強大的系統,能結合監控,CMDB,自動化運維一體的系統,而且使用學習成本更低,真正作到運維自動化!
官方QQ羣:445342415
官方微信羣
捐助支付寶
[root@cheungssh tmp]# unzip CheungSSH-Master.zip
[root@cheungssh tmp]# cd CheungSSH-Master/bin/
[root@cheungssh bin]# sh install-CheungSSH.sh install #這是一鍵自動化安裝,無需人工解決依賴等頭疼問題,這是真正的運維自動化體現之一
舒適提示:建議您使用Yum聯網安裝依賴模塊,本地安裝須要手動安裝依賴
更新
[root@cheungssh bin]# sh install-CheungSSH.sh update
舒適提示:
若是登陸次數聯繫超過5次,那麼系統會鎖定登陸IP一天時間。
首次登錄後修改密碼 http://您的IP地址:端口/cheungssh/admin/
普通配置
這裏,咱們考慮的是,不須要被管理服務器作任何的配置, 哪怕是像某些工具須要SSH-key綁定同樣, 在CheungSSH中, 徹底不須要,由於我要作的是簡單,再簡單!因此,在添加被管理服務器的時候,你只須要填寫被管理服務器的登陸密碼, 或者是SSH-key,就是你平時登陸服務器的方式,簡單易懂!
因此, 我根本不須要多作介紹, 當你看到界面的時候,你一下就能明白!應該填寫什麼信息。請相信CheungSSH,咱們要作的,就是讓用戶感受簡單!
高級配置
sudo登陸
您能夠選擇sudo爲 ”是“ 表示執行命令的時候,是啓用了sudo,而且在執行命令的時候不用輸入sudo開頭, 直接是命令, 好比本來是sudo ifconfig ,如今只須要 ifconfig,CheungSSH爲您自動切換
![]()
su - root
您能夠選擇su爲是; 表示執行命令的時候,是啓用了su - root,而且在執行命令的時候不用輸入su - root開頭, 直接是命令, 好比本來是su - root後,執行 ifconfig ,如今只須要 ifconfig,CheungSSH爲您自動切換
![]()
應用場景:執行一個whoami的命令,請記得,這個命令是在被管理的遠程服務器上執行的
命令回顯,功能區域介紹:
關於websocket: class WebSocketServer(object): def __init__(self): self.socket = None def begin(self): print( 'WebSocketServer Start!') self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) self.socket.bind(("0.0.0.0",1337)) self.socket.listen(50) global connectionlist while True: i=str(random.randint(90000000000000000000,99999999999999999999)) connection, address = self.socket.accept() print '客戶端ip',address username=address[0] ie_key='connection'+i path="/" newSocket = WebSocket(connection,i,username,address,path,ie_key) newSocket.start() #開始線程,執行run函數 connectionlist[ie_key]=connection
應用場景:假如您現網有一萬臺服務器,那麼本次您只想對其中的一千臺服務器進行操做,那麼您能夠挑選出要執行任務的主機
應用場景:
加入今晚須要對一部分的主機在24:00的時候執行一些命令,用來收集服務器的信息,此時,您使用該功能就不用值夜了,交給CheungSSH的計劃任務模塊,那麼您就能夠安心睡大覺了
選擇計劃任務的時間 ,這裏與Linux系統的 分 時 日 月 星期 一一對應:
確認計劃任務的時間,能夠看到這個時間格式跟Linux系統的如出一轍,沒錯,咱們就是把它作成了操做系統的crontab功能:
![]()
![]()
CheungSSH計劃任務查看
操做系統計劃任務查看
[root@cheungssh bin]# crontab -l
*/1 */1 */1 */1 */1 /home/cheungssh/mysite/mysite/cheungssh/daemon_FileTransfer.py '{"status": "\u672a\u542f\u52a8", "lasttime": "2015-10-25 18:45:20", "cmd": "", "createtime": "2015-10-25 18:45:20", "sfile": "/var/log", "user": "bo", "fid": "92262569677243366214", "runtype": "download", "runtime": "*/1 */1 */1 */1 */1", "id": "99556469106"}' #92262569677243366214
*/1 */1 */1 */1 */1 /home/cheungssh/bin/cheungssh_web.py 94246137977316460425
*/1 */1 */1 */1 */1 /home/cheungssh/bin/cheungssh_web.py 91254503983769069002
[root@cheungssh bin]#
提示:
CheungSSH仍是爲了用戶考慮,經過以上的計劃任務, 您可能知道怎麼用, 可是對於計劃任務的結果, 運行流程,是感受不清晰的,在這裏,我想我有必要向您解釋一下,仍是那句話, CheungSSH要作到的是,讓用戶感受簡單,而且要真正讓用戶使用起來簡單,因此這個計劃任務的原理上是:在CheungSSH控制機器上作的計劃任務,並無在被管理的服務器上作計劃任務,這樣,就能爲您下降更多運營成本,重要的是,還不變更您的被管理機器,再一次作到穩定!下降複雜度!
文件傳輸記錄
應用場景:對於全部的上傳 下載文件的記錄 咱們都作了記錄,下面是傳輸的記錄:
文件下載
應用場景:在遠程被管理的服務器上有一個文件,此時若是您須要獲取文件內容,那麼您可使用咱們的下載功能,把遠程服務器上的文件下載到CheungSSH服務器上,而後從CheungSSH服務器再下載到您的本地電腦PC機器上,而後神奇的是,這一切過程,都是自動的!
友情提示:不只支持文件下載,還支持目錄下載哦!
![]()
![]()
從遠程服務器下載文件到CheungSSH上之後,自動彈出下載成功的文件,而且顯示沒有下載成功的文件:
![]()
從CheungSSH上下載剛纔從遠程服務器上下載的文件到您的本地電腦上:
文件上傳
應用場景:假如您須要更新或者上傳一些文件到被管理服務器上,那麼這裏您可使用上傳功能:
![]()
文件上傳和下載 都有進度顯示的哦!
![]()
其實咱們利用的就是paramiko的SFTP函數實現的: def UpdateFile(ip,port,username,password,UseKey,sfile,dfile): try: t=paramiko.Transport((ip,port)) if UseKey=="Y": KeyPath=os.path.expanduser('~/.ssh/id_rsa') key=paramiko.RSAKey.from_private_key_file(KeyPath) t.connect(username = username,pkey=key) else: t.connect(username = username,password = password) sftp = paramiko.SFTPClient.from_transport(t) ret=sftp.put(sfile,dfile)
舒適提示:您依然能夠上傳一個文件夾的哦!
執行腳本
開放API
主機信息API
服務器運行日誌API
服務器狀態檢查API
文件傳輸API
命令執行API
資產信息API
計劃任務API
更多API .....
更多功能
腳本執行
計劃任務
權限審計
權限受權
安全設置
更多功能...
還有堡壘機角色...
這裏不作一一介紹,當您看見了CheungSSH Web界面的時候,不須要我多作介紹了,您一眼就能看明白,這個東西應該怎麼用!由於咱們堅持作到簡約!更簡約!目前有800個單位和用戶,他們不多問我這個功能如何使用,都是一看就明白!