CheungSSH國產中文開源自動化運維系統Web界面(二)
精彩內容上篇:CheungSSH國產中文開源自動化運維系統Web界面(一)
【引自張其川的博客】登錄CheungSSH Web
溫馨提示:
如果登錄次數聯系超過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
#p#
選擇服務器
應用場景:假如您現網有一萬臺服務器,那么本次您只想對其中的一千臺服務器進行操作,那么您可以挑選出要執行任務的主機。
添加計劃任務
應用場景:
加入今晚需要對一部分的主機在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控制機器上做的計劃任務,并沒有在被管理的服務器上做計劃任務,這樣,就能為您降低更多運營成本,重要的是,還不變動您的被管理機器,再一次做到穩定!降低復雜度!
#p#
文件下載
文件傳輸記錄
應用場景:對于所有的上傳、下載文件的記錄,我們都做了記錄,下面是傳輸的記錄:
文件下載
應用場景:在遠程被管理的服務器上有一個文件,此時如果您需要獲取文件內容,那么,您可以使用我們的下載功能,把遠程服務器上的文件下載到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個單位和用戶,他們很少問我這個功能如何使用,都是一看就明白!
作者介紹:
張其川,2012年參加工作,時年從事IT Linux運維工作;2013年,從事IT系統運維工作;2014年,先后從事運維、python開發工作;2015年,從事自動化運維工作,致力于運維 自動化技術研究。他擅長Linux系列Redhat、Centos操作系統管理、Oracel數據庫DBA維護,目前任職python高級運維開發工程師。