標籤:拷貝 配置 auto 火牆 client cmd color usr log
python 資產管理一、Agent 方式
1.這個方法的優點:使用簡單,速度快,適合伺服器較多情境使用,缺點:伺服器比較佔資源,效能會變低。
2.使用Agent的前提條件是用戶端(伺服器)特別多的時候使用這種方法。
3.Agent方法原理是在每一台伺服器上部署python指令碼代碼(拷貝到伺服器),然後再從每一台伺服器中擷取硬體資訊
4.每一個用戶端都會把資料發送給api然後再通過api把每個伺服器的資訊發送個資料庫
Agent 每一個用戶端執行的
import subprocessimport requestsurl="http://127.0.0.1:8000/asset.html"# 設定一個url,也就是api的地址value1= subprocess.getoutput(‘ipconfig‘)# 通過subprocess.getoutput擷取括弧內的命令執行後轉成的字串value2= subprocess.getoutput(‘dir‘)# 通過subprocess.getoutput擷取括弧內的命令執行後轉成的字串response=requests.post(url,data={‘k1‘:value1,‘k2‘:value2})# 通過requests模組以post請求攜帶字典內容發送到url中,在api端我們設定了傳回值,所以當前有一個接收的值print(response.text)# 列印接收參數的內容
API
from django.shortcuts import render,HttpResponse# Create your views here.def asset(request): if request.method==‘POST‘: print(request.POST.get(‘a‘)) print(1) return HttpResponse(‘收到了‘) else: return HttpResponse(‘沒有收到‘)
二、SSH類 paramiko
1.優點:無agent,每個伺服器不需要進行全部指令碼部署,缺點:因為需要遠端連線,使用網路會有傳輸慢弊端
2.paramiko 管理員模式是通過一個中控主機遠端連線到多台伺服器一種管理員模式3.paramiko 的使用條件是服務比較少的時候
4.paramiko 原理通過中控機擷取每台伺服器的資訊,然後返回給api,在由api提交給資料庫
ssh中控主機的代碼
import paramiko
ssh=paramiko.SSHClient()
# 允許串連不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 串連伺服器
ssh.connect(hostname=‘192.168.227.146‘,port=22,username=‘root‘,password=‘123456‘)
stdin,stdout,stderr = ssh.exec_command(‘ifconfig‘)
# 執行命令
result = stdout.read()
# 擷取命令結果
ssh.close()
# 關閉串連
print(result)
url="http://127.0.0.1:8000/asset.html"
# 設定一個url,也就是api的地址
response=requests.post(url,data={‘k1‘:‘value1‘,‘k2‘:‘value2‘})
# 通過requests模組以post請求攜帶字典內容發送到url中,在api端我們設定了傳回值,所以當前有一個接收的值
print(response.text)
# 列印接收參數的內容
三、saltstack安裝與配置
1.當下最火軟體,大部分公司都在使用中
saltstack(Python開發)安裝與配置安裝saltstack (父機)yum install salt-master - y安裝完成後進行檔案配置vim /etc/salt/master找到master 192.168.227.144 這個地址是服務端原生地址安裝完成並配置完檔案後啟動用戶端service salt- master start安裝saltstack(子機)yum install salt-minion - y在用戶端的編輯器中修改(vim /etc/salt/minion)找到master 192.168.227.144 這個地址是服務端的地址或 master: - 10.211.55.4 - 10.211.55.5 random_master: Trueid: c2.salt.com # 用戶端在salt-master中顯示的唯一ID安裝完成並配置完檔案後啟動服務端service salt-minion start需要注意:在服務端和用戶端都要把防火牆關閉,不然就不能接受到訪問
saltstack(Python開發)授權salt-key -L # 查看已授權和未授權的slavesalt-key -a salve_id # 接受指定id的salvesalt-key -r salve_id # 拒絕指定id的salvesalt-key -d salve_id # 刪除指定id的salve在用戶端和服務端的設定檔都沒有問題後,能夠通訊後就查看授權
授權
在master中通過python訪問api進行資料轉送
#!/usr/bin/python#conding:utf8#import salt.client,requests#local = salt.client.LocalClient()#result = local.cmd(‘*‘,‘cmd.run‘,[‘ifconfig‘])#url=‘192.168.11.25‘#requests.post(url,result)import subprocess,requestsv=subprocess.getoutput(‘salt "*" cmd.run "ifconfig"‘)url =‘http://192.168.11.25:8000‘requests.post(url,data={‘a‘:v})
在中控機上運行python指令碼把擷取的資料轉送到api上然後再通過api提交的資料庫
上邊方法中所提到的api代碼
from django.shortcuts import render,HttpResponse# Create your views here.def asset(request): if request.method==‘POST‘: # print(request.POST.get(‘a‘)) print(1) return HttpResponse(‘收到了‘) else: return HttpResponse(‘沒有收到‘)
四、puppet(ruby)
1.老公司一般使用這種方式
puppet 原理每個伺服器會定時迴向api發送自己機器相關資料(定時預設為30分鐘)然後通過api向資料庫提交資料
python 資產管理