研究可執行子產品的時候,發現很多自帶的子產品已經很完善,可以幫助我們完成日常工作了,這裡寫入自己的記錄操作:
1、使用salt.clien調用接口操作舉例:
1
2
3
4
5
<code>>>> </code><code>import</code> <code>salt.client</code>
<code>>>> client </code><code>=</code> <code>salt.client.LocalClient()</code>
<code>>>> ret </code><code>=</code> <code>client.cmd(</code><code>'*'</code><code>,</code><code>'test.ping'</code><code>)</code>
<code>>>> ret</code>
<code>{</code><code>'monitor'</code><code>: </code><code>True</code><code>}</code>
我們看到調用了LocalClient()這個函數之後,等于我們執行的指令 salt '*' test.ping.運用這個接口我們可以靈活的再調用子產品開發時候使用
2、status子產品
剛發現這個子產品,原來想做系統監控時候用Mine調用,現在發現這個子產品也是蠻适合的,可以監控,cpu、記憶體、硬碟、網絡,等一些我們日常資訊:可以檢視子產品源碼:/usr/lib/python2.6/site-packages/salt/modules/status.py。
源碼片段,下面是我們可以操作的函數。
6
7
8
9
10
11
12
13
<code>def</code> <code>all_status():</code>
<code> </code><code>... ... ...</code>
<code> </code><code>return</code> <code>{</code><code>'cpuinfo'</code><code>: cpuinfo(),</code>
<code> </code><code>'cpustats'</code><code>: cpustats(),</code>
<code> </code><code>'diskstats'</code><code>: diskstats(),</code>
<code> </code><code>'diskusage'</code><code>: diskusage(),</code>
<code> </code><code>'loadavg'</code><code>: loadavg(),</code>
<code> </code><code>'meminfo'</code><code>: meminfo(),</code>
<code> </code><code>'netdev'</code><code>: netdev(),</code>
<code> </code><code>'netstats'</code><code>: netstats(),</code>
<code> </code><code>'uptime'</code><code>: uptime(),</code>
<code> </code><code>'vmstats'</code><code>: vmstats(),</code>
<code> </code><code>'w'</code><code>: w()}</code>
<code></code>
使用方法:
<code>[root@mail python]</code><code># salt '*' status.uptime</code>
<code>monitor:</code>
<code> </code><code>11</code><code>:</code><code>40</code><code>:</code><code>50</code> <code>up </code><code>23</code> <code>days, </code><code>23</code><code>:</code><code>24</code><code>, </code><code>1</code> <code>user, load average: </code><code>0.00</code><code>, </code><code>0.00</code><code>, </code><code>0.00</code>
api接口調用方法:
<code>>>> client.cmd(</code><code>'*'</code><code>,</code><code>'status.uptime'</code><code>)</code>
<code>{</code><code>'monitor'</code><code>: </code><code>' 11:41:52 up 23 days, 23:25, 1 user, load average: 0.00, 0.00, 0.00'</code><code>}</code>
3、system
<code>system子產品主要是用來做日常操作計算機維護記錄,源碼也在上面的位置下:</code>
<code>system.halt </code><code>#停止正在運作的系統</code>
<code>system.init </code><code>3</code> <code>#切換到字元界面,5是圖形界面</code>
<code>system.poweroff</code>
<code>system.reboot</code>
<code>system.shutdown</code>
<code>操作方法:不示範:</code>
<code>4、systemd</code>
<code>系統管理子產品,這個也是一個非常有用的功能,我們可以用來檢測我們的服務是否已經啟動,源碼自己檢視:</code>
<code> </code>
14
<code>service.available sshd </code><code>#檢視服務是否可用</code>
<code> </code><code>service.disable <service name> </code><code>#設定開機啟動的服務</code>
<code> </code><code>service.enable <service name></code>
<code> </code><code>service.disabled <service name> </code><code>#檢視服務是不是開機啟動</code>
<code> </code><code>service.enabled <service name></code>
<code> </code><code>service.get_disabled </code><code>#傳回所有關閉的服務</code>
<code> </code><code>service.get_enabled </code><code>#傳回所有開啟的服務</code>
<code> </code><code>service.get_all </code><code>#傳回所有服務</code>
<code> </code><code>service.</code><code>reload</code> <code><service name> </code><code>#重新載入指定的服務</code>
<code> </code><code>service.restart <service name> </code><code>#重新開機服務</code>
<code> </code><code>service.start <service name></code>
<code> </code><code>service.stop <service name></code>
<code> </code><code>service.status <service name></code>
<code> </code><code>service.force_reload <service name> </code><code>#強制載入指定的服務</code>
<code>使用方法:</code>
<code>[root@mail python]</code><code># salt '*' service.available sshdmonitor: True</code>
<code>api調用:</code>
<code>>>> client.cmd(</code><code>'*'</code><code>,</code><code>'service.available'</code><code>,[</code><code>'sshd'</code><code>]){</code><code>'monitor'</code><code>: </code><code>True</code><code>}</code>
總結:通過api接口的調用,我們就會發現生成很多我們想要的結果,因為是字典,我們可以很容易的對收到的資料進行操作。
本文轉自 小羅ge11 51CTO部落格,原文連結:http://blog.51cto.com/xiaoluoge/1615905,如需轉載請自行聯系原作者