Linux運維對比:Shell運維 VS Python運維

目錄

 

一、目的所在

二、實例

2.1、需求

2.2、通過Shell實現

2.3、通過Python實現

2.4、擴展

Shell

Python

主要區別:

實現功能:

跨平臺性:


一、目的所在

通過簡單的例子去找出Linux運維中使用shell與使用python的一些不同,分析兩者的主要特點

二、實例

2.1、需求

  1. 查詢當前主機是否支持超線程

  2. 查詢當前內存使用情況

2.2、通過Shell實現

既然是在Linux,那麼肯定要先使用Linux自身的工具,實現腳本內容如下:

g='\e[1;32m'
e='\e[0m'
prin(){
        echo -e "$1"
}
cpu_red(){
        #內核數[即線程]
        cpu_processor=`grep processor /proc/cpuinfo | wc -l`
        #CPU數量[即多路]
        cpu_number=`cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l`
        #CPU物理內核
        cpu_core=`cat /proc/cpuinfo | grep "cpu cores" | sed -n '1p' | awk '{print $4}'`
        #CPU型號
        cpu_info=`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`
}
mem_red(){
        #總內存[單位MB]
        total=`free -m | grep -v "Swap" | awk '{print $2}' | sed -n "2p"`
        used=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $3}'`
        free=`free -m | grep -v "Swap" | sed -n '2p'| awk '{print $4}'`
        shared=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $5}'`
        cache=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $6}'`
}
print_cpu(){
        cpu_red
        echo -e "CPU物理數:${g}${cpu_number}${e}\nCPU內核數:${g}${cpu_core}${e}\nCPU型號:${g}${cpu_info}${e}"
        if [[ ${cpu_core} == ${cpu_processor} ]];then
                echo -e "超線程:${g}支持${e}"
        else
                echo -e "超線程:${g}不支持${e}"
        fi
}
print_mem(){
        mem_red
        d="當前主機內存信息 總內存:${g}${total}MB${e} 當前已用:${g}${used}MB${e} 當前可用:${g}${free}MB${e} 共享佔用:${g}${shared}MB${e} 緩存佔用:${g}${cache}MB${e}"
        for i in $d;do
                prin "$i"
        done
}
print_cpu
print_mem

執行結果如下:

 

2.3、通過Python實現

源碼如下:

import psutil
def cpu():
    info = psutil.cpu_times()
    luoji = psutil.cpu_count()
    wuli = psutil.cpu_count(logical=False)
    if luoji == wuli:
        print("主機CPU不支持超線程")
    else:
        i = int(luoji/2)
        if wuli == i:
            print("主機CPU支持超線程")
def mem():
    mems = psutil.virtual_memory()
    print('當前主機總內存:', int(mems.total/1024/1024), 'MB')
    print('當前已使用:', int(mems.used/1024/1024), 'MB')
cpu()
mem()

執行結果如下:

2.4、擴展

下面附上Windows端的執行結果

Shell

Python

主要區別:

實現功能:

  • Shell需要通過相關命令進行特定的篩選,靈活性比較高,但是比較複雜

  • Python只需要調用別人寫好的模塊即可實現相關功能,且不需要熟悉Linux命令,但是能夠實現的功能相對來說不夠靈活,總體就是簡單

跨平臺性:

  • Shell可以在任意Linux平臺上運行

  • Python可以在任意平臺上運行,所以Python的跨平臺性更強

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章