Linux下 python脚本的编写(一)

服务器测试中,我们就经常用到shell和python脚本。测试时间长了,这两种语言就有必要学习一下。下面我们将一个简单的shell脚本转化为python。
比如 一个检测ssd smart log的脚本

#!/bin/bash
for ssd in `lsscsi  |grep -i disk |awk '{print $NF}'`
do
        echo "==========$ssd===========" |tee -a ssd.log
        smartctl -i $ssd |tee -a ssd.log
done

log如下:

[root@localhost ~]# cat ssd.log
==========/dev/sda===========
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.49.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9361-8i
Revision:             4.68
Compliance:           SPC-3
User Capacity:        479,559,942,144 bytes [479 GB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
Logical Unit id:      0x600605b0110407b02957eacaa6c2f752
Serial number:        0052f7c2a6caea5729b0070411b00506
Device type:          disk
Local Time is:        Thu Jan 27 16:38:04 2022 CST
SMART support is:     Unavailable - device lacks SMART capability.

==========/dev/sdb===========
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.49.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9361-8i
Revision:             4.68
Compliance:           SPC-3
User Capacity:        479,559,942,144 bytes [479 GB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
Logical Unit id:      0x600605b0110407b02957eacba6c8d581
Serial number:        0081d5c8a6cbea5729b0070411b00506
Device type:          disk
Local Time is:        Thu Jan 27 16:38:04 2022 CST
SMART support is:     Unavailable - device lacks SMART capability.

==========/dev/sdc===========
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.49.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org


现在用python的语言转化一下,用os模块调用指令

import os
ssd = os.popen("lsscsi  |grep -i avago |awk '{print $NF}' ").read()
print ssd

打印结果如下:

[root@localhost ~]# python try.py
/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdf
/dev/sdg
/dev/sdh
/dev/sdi
/dev/sdj
/dev/sdk
/dev/sdl

[root@localhost ~]# cat try.py

最后一行为空,遍历的时候需要去掉最后一行,然后遍历列表

import os
ssd = os.popen("lsscsi  |grep -i avago |awk '{print $NF}' ").read()
print ssd.split('\n')[:-1]

结果如下:

[root@localhost ~]# python try.py
['/dev/sda', '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl']

然后 输出 smart log信息

import os
ssd = os.popen("lsscsi  |grep -i avago |awk '{print $NF}' ").read()
for i in ssd.split('\n')[:-1]:
    os.popen("echo ========="+i+"=======>>1.log")
    c = os.popen("smartctl -i {} >> 1.log".format(i)).read()

结果如下:

[root@localhost ~]# cat 1.log
=========/dev/sda=======
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.49.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9361-8i
Revision:             4.68
Compliance:           SPC-3
User Capacity:        479,559,942,144 bytes [479 GB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
Logical Unit id:      0x600605b0110407b02957eacaa6c2f752
Serial number:        0052f7c2a6caea5729b0070411b00506
Device type:          disk
Local Time is:        Thu Jan 27 16:34:40 2022 CST
SMART support is:     Unavailable - device lacks SMART capability.

=========/dev/sdb=======
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.49.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9361-8i
Revision:             4.68
Compliance:           SPC-3
User Capacity:        479,559,942,144 bytes [479 GB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
Logical Unit id:      0x600605b0110407b02957eacba6c8d581
Serial number:        0081d5c8a6cbea5729b0070411b00506
Device type:          disk
Local Time is:        Thu Jan 27 16:34:40 2022 CST
SMART support is:     Unavailable - device lacks SMART capability.

=========/dev/sdc=======

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值