導航:首頁 > 編程語言 > python獲取任務管理器應用信息

python獲取任務管理器應用信息

發布時間:2022-07-31 17:43:11

『壹』 已經獲取虛擬機的所有信息,怎麼用python提取網卡信息

KVM(Kernel-based Virtual Machine)作為一個開源的系統虛擬化模塊,已經成為虛擬機虛擬化技術的主流,在越來越多的Cloud環境中使用。為了保證Cloud環境的正常運行,需要在運維過程中對Cloud環境中的VM狀態進行監控,比如CPU,內存,Disk,Disk I/O,Network I/O等信息,可以利用這些信息及時的調整分配Cloud環境的資源,保證VM的正常運行。Libvirt是基於KVM的上層封裝,提供了操作KVM的原生層介面,可以實現對虛擬機的日常管理操作,如虛擬機的生命周期(創建,刪除,查看,管理),開機,關機,重啟,網路管理,存儲管理等。本文以查看hypervisor的instance為例,講述通過Libvirt-python模塊,查看當前HOST的KVM虛擬機常用監控信息。文章主要包括如下幾個方面的內容:
1、 Libvirt-python模塊的簡單介紹與環境安裝配置;
2、 利用Python調用API獲取 VM相關監控信息;
1. Libvirt-python模塊的簡單介紹與安裝配置
Libvirt提供一種虛擬機監控程序不可知的 API 來安全管理運行於主機上的客戶操作系統,是一種可以建立工具來管理客戶操作系統的 API。Libvirt 本身構建於一種抽象的概念之上。它為受支持的虛擬機監控程序實現的常用功能提供通用的API,適用於包括基於KVM/QEMU, Xen, LXC, OpenVZ, Virtualbox, VMware, PowerVM等多種虛擬機化技術的虛擬機。Libvirt-python是基於libvirt API的python語言綁定工具包,通過該包,可以使用python對VM進行日常管理操作和監控數據獲取。需要運行的Python監控程序可以在KVM的HOST中運行,也可以在基於KVM虛擬機化的任意環境運行,需要做的配置如下:
1) 環境准備:
安裝python 2.6及以上
安裝libvirt 1.2及以上
安裝libvirt-client 1.2及以上
安裝libvirt-python1.2及以上
以上環境如果已經在操作系統中存在並且滿足要求,不需要進行重復安裝,可以在libvirt的官方網站選擇不同的站點和適合自己操作系統的安裝包進行下載安裝。

2) 驗證安裝環境:

安裝完上述安裝包後,在命令行運行rpm -qa | grep libvirt 查看相關安裝信息是否正確如圖:

在命令行運行python命令查看python環境

在命令行運行virsh進入virsh命令行窗口

執行list –all,列出所有虛擬機,執行dommemstat domainID驗證windows虛擬機內存信息

unused代表虛機內部未使用的內存量,available代表虛機內部識別出的總內存量,那麼虛機內部的內存使用量則是(available-unused)。
如果windows虛擬機中沒有unused值,

按下一步安裝virtio-win驅動和balloon service,並且啟動balloon service
3) windows虛擬機Windows Virtio Drivers安裝。
1、下載地址,根據自己需求下載相應版本,這里以下載Stable virtio-win iso為例。
2、安裝驅動
3、安裝Balloon Services,
在python應用運行環境驗證servie,查看該VM 內存信息。

2. 利用Python調用API獲取 VM相關監控信息
2.1創建連接
Python的管理應用程序可以和域位於同一節點上,管理應用程序通過libvirt工作,以控制本地域,如下圖:

也可以運行在遠端,通過本地libvirt連接遠端libvirt,以控制本地域,該模式使用一種運行於遠程節點上的libvirtd守護進程。當在新節點上安裝libvirt時該程序會自動啟動,且可自動確定本地虛擬機監控程序並為其安裝驅動程序。該管理應用程序通過一種通用協議從本地libvirt連接到遠程libvirtd。

提供不同的連接方式,注意連接使用過後需要關閉。
from __future__ import print_function
import sys
import libvirt
# conn = libvirt.open('qemu+ssh://IP/system'
conn = libvirt.open('qemu:///system')
if conn == None:
print('Failed to open connection to qemu:///system', file=sys.stderr)
exit(1)
conn.close()
2.2 列出Domains
conn.listAllDomains(type)方法返回指定類型的domains列表,type參數可以設置以下類型
VIR_CONNECT_LIST_DOMAINS_ACTIVE
VIR_CONNECT_LIST_DOMAINS_INACTIVE
VIR_CONNECT_LIST_DOMAINS_PERSISTENT
VIR_CONNECT_LIST_DOMAINS_TRANSIENT
VIR_CONNECT_LIST_DOMAINS_RUNNING
VIR_CONNECT_LIST_DOMAINS_PAUSED
VIR_CONNECT_LIST_DOMAINS_SHUTOFF
VIR_CONNECT_LIST_DOMAINS_OTHER
VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE
VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE
VIR_CONNECT_LIST_DOMAINS_AUTOSTART
VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART
VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT
VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHO
如果設置為0,則返回所有活動和關機的domain
2.2 獲取監控數據
VM的監控信息主要是CPU使用率,內存使用率,Disk使用率,Disk I/O,Network I/O。其中,CPU的使用率,Disk I/O,Network I/O並不能直接獲取,需要經過計算獲得。
2.2.1 CPU使用率
libvirt中並不能直接獲取到虛擬機的CPU使用率,但是可以通過CPUTIME來計算出實際使用率。計算的公式為:
首先得到一個周期差:cpu_time_diff = cpuTimenow — cpuTimet seconds ago
然後根據這個差值計算實際使用率:%CPU = 100 × cpu_time_diff / ((now- seconds ago) × vcpus × 109).CPUtime可以使用domain的info函數獲得,如下:
from __future__ import print_function
import sys
import libvirt
from xml.dom import minidom
conn = libvirt.open('qemu:///system')
dom = conn.lookupByName(domName)
dominfo = dom.info()
print('The state is ' + str(dominfo[0]))
print('The max memory is ' + str(dominfo[1]))
print('The memory is ' + str(dominfo[2]))
print('The number of cpus is ' + str(dominfo[3]))
print('The cpu time is ' + str(dominfo[4]))
conn.close()
info()函數返回一個數組,下標為4的值即為CPUTime。
2.2.2 內存使用率
內存的使用情況可以函數dom.memoryStats()獲得,如下:
from __future__ import print_function
import sys
import libvirt
domName = 'Fedora22-x86_64-1'
conn = libvirt.open('qemu:///system')
if conn == None:
print('Failed to open connection to qemu:///system', file=sys.stderr)
exit(1)
dom = conn.lookupByID(5)
if dom == None:
print('Failed to find the domain '+domName, file=sys.stderr)
exit(1)
stats = dom.memoryStats()
print('memory used:')
for name in stats:
print(' '+str(stats[name])+' ('+name+')')
conn.close()
exit(0)
可以在Virsh命令行中驗證獲取的值是否正確。
2.2.3 Disk使用率
對於一個VM的DISK,在DOMAIN XML的device根據標示獲取,有關Disk部分的XML如下所示。
<devices>
<disk type='file' snapshot='external'>
<driver name="tap" type="aio" cache="default"/>
<source file='/var/lib/xen/images/fv0' startupPolicy='optional'>
<seclabel relabel='no'/>
</source>
<target dev='hda' bus='ide'/>
/*這個'hda'就是需要的參數 */
<iotune>
<total_bytes_sec>10000000</total_bytes_sec>
<read_iops_sec>400000</read_iops_sec>
<write_iops_sec>100000</write_iops_sec>
</iotune>
<boot order='2'/>
<encryption type='...'>
...
</encryption>
<shareable/>
<serial>
...
</serial>
</disk>
...
</devices>
使用函數domain.blockInfo(disk,0)獲得磁碟的總量和已使用量
2.2.4 Disk I/O
可以使用 domain. blockStats ()方法,該方法需要傳遞一個Disk的參數,這個參數可以通過XML文件取得:
<devices>
<disk type='file' snapshot='external'>
<driver name="tap" type="aio" cache="default"/>
<source file='/var/lib/xen/images/fv0' startupPolicy='optional'>
<seclabel relabel='no'/>
</source>
<target dev='hda' bus='ide'/>
/*這個'hda'就是需要的參數 */
<iotune>
<total_bytes_sec>10000000</total_bytes_sec>
<read_iops_sec>400000</read_iops_sec>
<write_iops_sec>100000</write_iops_sec>
</iotune>
<boot order='2'/>
<encryption type='...'>
...
</encryption>
<shareable/>
<serial>
...
</serial>
</disk>
...
</devices>
2.2.5 Network I/O
可以使用 domain.interfaceStats()方法,該方法需要傳遞一個虛擬網卡介面的參數,這個參數可以通過XML文件取得:
<interface type='bridge'>
<mac address='00:16:3e:74:03:53'/>
<source bridge='xenbr0'/>
<script path='vif-bridge'/>
<target dev='vif1.0 '/>
/*這個vif1.0就是需要的參數 */
</interface>
網卡的I/O值返回是一個數組,根據自己需要獲取對應的值。
3. 總結
通過對VM監控信息的獲取,可以實時的了解Cloud環境中各個VM的負載和使用情況,合理的調配計算資源,或者關閉長時間沒有使用的VM,做到Cloud資源的合理利用和運行環境的健康可靠性。

『貳』 利用python寫一段讀取電腦配置信息的程序

主要利用python的wmi模塊,提供非常多的信息。

importwmi
defsys_version():
c=wmi.WMI()

#操作系統版本,版本號,32位/64位
print(' OS:')
sys=c.Win32_OperatingSystem()[0]
print(sys.Caption,sys.BuildNumber,sys.OSArchitecture)

#CPU類型CPU內存
print(' CPU:')
processor=c.Win32_Processor()[0]
print(processor.Name.strip())
Memory=c.Win32_PhysicalMemory()[0]
print(int(Memory.Capacity)//1048576,'M')

#硬碟名稱,硬碟剩餘空間,硬碟總大小
print(' DISK:')
fordiskinc.Win32_LogicalDisk(DriveType=3):
print(disk.Caption,'free:',int(disk.FreeSpace)//1048576,'M ','All:',int(disk.Size)//1048576,'M')

#獲取MAC和IP地址
print(' IP:')
forinterfaceinc.Win32_NetworkAdapterConfiguration(IPEnabled=1):
print("MAC:%s"%interface.MACAddress)
forip_addressininterface.IPAddress:
print(" IP:%s"%ip_address)

#BIOS版本生產廠家釋放日期
print(' BIOS:')
bios=c.Win32_BIOS()[0]
print(bios.Version)
print(bios.Manufacturer)
print(bios.ReleaseDate)


sys_version()

顯示:

OS:
MicrosoftWindows10專業版1713464位

CPU:
Intel(R)Core(TM)[email protected]
8192M

DISK:
C:free:34165M All:120825M
D:free:265648M All:390777M
E:free:35669M All:204796M
F:free:5814M All:28163M
G:free:328650M All:329999M

IP:
MAC:00:50:56:C0:00:01
IP:192.168.182.1
IP:fe80::e0fb:efd8:ecb0:77f4
MAC:00:50:56:C0:00:08
IP:192.168.213.1
IP:fe80::8da1:ce76:dae:bd48
MAC:54:E1:AD:77:57:AB
IP:192.168.199.105
IP:fe80::aca8:4e6f:46e7:ef4a

BIOS:
LENOVO-1
LENOVO
20170518000000.000000+000

『叄』 如何通過python獲取應用程序里列表的值

界面自動化是相當困難的,成本也高
測試還不如在代碼里多加點輔助代碼,測試的時候不依賴界面就方便了
另wpf的mvvm模式之所以受歡迎,原因之一就是因為對測試的友好,大多數情況下要相信binding的可靠性(因為這是由微軟保證)測試只需要驗證數據即可

『肆』 怎麼用python查詢出 進程 CPU使用率 內存使用 句柄數

看到句柄數這幾個字,我猜可能是要windows下運行的?

可能答非所問,不過在linux下最好的用的莫過於psutil了,你可以通過進程名或pid很好的監控任意進程的系統佔用情況,甚至進程建立的每個連接都能獲取到

>>>importpsutil
>>>psutil.pids()
[1,2,3,4,5,6,7,46,48,50,51,178,182,222,223,224,
268,1215,1216,1220,1221,1243,1244,1301,1601,2237,2355,
2637,2774,3932,4176,4177,4185,4187,4189,4225,4243,4245,
4263,4282,4306,4311,4312,4313,4314,4337,4339,4357,4358,
4363,4383,4395,4408,4433,4443,4445,4446,5167,5234,5235,
5252,5318,5424,5644,6987,7054,7055,7071]
>>>
>>>p=psutil.Process(7055)
>>>p.name()
'python'
>>>p.exe()
'/usr/bin/python'
>>>p.cwd()
'/home/giampaolo'
>>>p.cmdline()
['/usr/bin/python','main.py']
>>>
>>>p.status()
'running'
>>>p.cpu_percent(interval=1.0)
12.1

>>>psutil.net_io_counters(pernic=True)
{'eth0':netio(bytes_sent=485291293,bytes_recv=6004858642,packets_sent=3251564,packets_recv=4787798,errin=0,errout=0,dropin=0,dropout=0),
'lo':netio(bytes_sent=2838627,bytes_recv=2838627,packets_sent=30567,packets_recv=30567,errin=0,errout=0,dropin=0,dropout=0)}

從官方文檔上了一部分出來,有沒有碉堡了的感覺,快去翻一下文檔吧,非常容易使用

『伍』 python中怎樣獲取文件的修改時間及其他系統信息狀態

win7更改文件的修改時間有兩種方法; 1.修改系統日期,刪除一個字保存,再把字回寫,保存圖片的話,修改系統日期,打開另存為 2.下載Configure FileMenu Tools軟體。最新版是6.4的。 安裝完畢後,資源管理器中滑鼠右鍵有「FileMenu Tools」鍵,裡面有「更改時間」。 可以隨意更改文件的創建時間、修改時間等

『陸』 如何用Python實現自動登錄獲取信息

那你就用 Selenium 和 PhantomJS 模擬瀏覽器登陸就行了。
超級簡單~~~

『柒』 怎樣用python讀取終端顯示的信息

簡單說一下,文件的詳細信息你可以從os.stat中獲取,具體要做成什麼樣子,自己格式化一下字元串就好了,這里獲取的是所有者名稱、創建時間、最後修改時間:

importos,sys,pwd
file=sys.argv[1]
stat=os.stat(file)
uid=stat.st_uid
printpwd.getpwuid(uid)[0],stat.st_ctime,stat.st_mtime

時間是unix時間戳,格式化成datetime或字元串很簡單,你自己處理一下就好

閱讀全文

與python獲取任務管理器應用信息相關的資料

熱點內容
php開發客戶端 瀏覽:986
theisle測試服怎麼搜伺服器 瀏覽:445
廣播PDF 瀏覽:216
單片機編程300例匯編百度 瀏覽:33
騰訊雲連接不上伺服器 瀏覽:221
不能用來表示演算法的是 瀏覽:859
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923