使用shell和python分别实现简单菜单功能--打印当前系统状态信息

哥哥我又回来啦,哈哈··好久没来写博客了,现在慢慢把以前的都补上!最近在学习python,所以会更新一些学习中遇到的问题。

今天的内容是用python实现之前学习shell的时候写的一个简单脚本的功能:选择对应的菜单项,打印当前系统的状态信息。

不罗嗦了,上代码:

#!/bin/bash
 
User ()
{
       echo "用户登录记录:"
       echo "`last`"
}
 
Ifcfg ()
{
        echo "本机网卡信息如下:" 
        echo "`ifconfig`"
}
 
Netstat ()
{
        echo "http的并发请求数及其TCP连接状态:" 
        echo "`netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘`" 
}
 
Nfsstat ()
{
   echo " NFS 状态:" 
   echo "`nfsstat -cn`" 
}
 
System ()
{
   echo " 系统版本:"
   echo "`lsb_release -a`"
}
 
Disk ()
{
   echo " 磁盘分区使用情况:"
   echo "`df -h`"
}
 
IO ()
{
   echo " 磁盘I/O:"
   echo "`iostat -dx`"
}
 
Top ()
{
   echo " cpu、内存使用情况:"
   echo "`vmstat 5`"
}
 
PS3="请输入您的选择:"
A="查看当前用户:查看当前网卡参数:查看http并发数:查看NFS状态:系统版本:磁盘分区使用情况:磁盘IO
:cpu内存使用情况:退出脚本" && IFS=:
  select i in ${A};do
    case $i in
          查看当前用户)
           User
          ;;
          查看当前网卡参数)
           Ifcfg
          ;;
          查看http并发数)
           Netstat
          ;;
          查看NFS状态)
           Nfsstat
          ;;
          系统版本)
           System
          ;;
          磁盘分区使用情况)
           Disk
          ;;
          磁盘IO)
           IO
          ;;
          cpu内存使用情况)
           Top
          ;;
          退出脚本)
           exit 0 ;;
          *)
          echo "没有正确的选择"; exit 1;;
    esac
done

python代码实现:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Filename: systemstatus.py
 
import os
# swich case 实现
# This class provides the functionality we want. You only need to look at
# this if you want to know how this works. It only needs to be defined
# once, no need to muck around with its internals.
class switch(object):
    def __init__(self, value):
        self.value = value
        self.fall = False
 
    def __iter__(self):
        """Return the match method once, then stop"""
        yield self.match
        raise StopIteration
 
    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args: # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False
 
def print_menu():
    menu = {
        1: "查看当前用户",
        2: "查看当前网卡参数",
        3: "查看http并发数",
        4: "查看nfs状态",
        5: "系统版本",
        6: "磁盘分区使用情况",
        7: "磁盘IO",
        8: "cpu内存使用情况",
        9: "打印这个菜单"
    }
    print(‘系统信息查看工具菜单:‘)
    # 打印整个菜单
    for i in menu:
        print(i, menu[i])
    return
lst = print_menu()
print(lst)
# while True 的部分实现了一个永远不会自己停止的循环。但是在循环内部的if语句中加入条件是可以的,在条件满足时调用break语句。
# 这样一来就可以早循环内部任何地方而不是只在开头(像普通的while循环一样)终止循环。
# if/break 语句自然地将循环分为两个部分:第一部分负责初始化(在普通的while循环中,这部分需要重复),第二部分则在循环条件
# 为真的情况下使用第一部分内初始化好的数据。
while True:
    item = input(‘请输入菜单编号(1-9,留空退出程序):‘)
    if not item: break
    for case in switch(item):
        if case(‘1‘):
            print(‘当前用户信息:‘)
            os.system(‘last‘)
            break
        if case(‘2‘):
            print(‘当前网卡参数:‘)
            os.system(‘ifconfig‘)
            break
        if case(‘3‘):
            print(‘http并发数:‘)
            os.system("netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘")
            break
        if case(‘4‘):
            print(‘nfs状态:‘)
            os.system(‘nfsstat -cn‘)
            break
        if case(‘5‘):
            print(‘系统版本:‘)
            os.system(‘lsb_release -a‘)
            break
        if case(‘6‘):
            print("磁盘分区使用情况")
            os.system(‘df -h‘)
            break
        if case(‘7‘):
            print(‘磁盘IO:‘)
            os.system(‘iostat -dx‘)
            break
        if case(‘8‘):
            print(‘cpu内存使用情况:‘)
            os.system(‘vmstat 5‘)
            break
        if case(‘9‘):
            lst = print_menu( )
            print(lst)
            break
        if case(‘‘):
            print("退出!")
            exit(1)

参考资料:Python实现类似switch...case功能

时间: 2024-10-14 06:22:02

使用shell和python分别实现简单菜单功能--打印当前系统状态信息的相关文章

shell脚本结合函数实现简单计算器功能

#!/bin/bashfunction tool_menu(){    echo "****************************************************"    echo "*                                                  *"    echo "*              calculation  tools                  *"   

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile 1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile' 2 #!usr/bin/env python 3 #-*-c

shell 下简单菜单脚本

menu.sh 菜单界面脚本 #!/bin/bash #menu.sh function menu(){ cat << eof ############################################# `echo -e "\033[32;40m  menu \033[0m"` ############################################# *    1)add a user *    2)set password for use

成功解决在Python文件上右键菜单无“Edit with IDLE”选项

我电脑是Win7旗舰版,之前电脑上安装的是Python2.6版本的,前两天为了体验一下Microsoft Excel与Python之间互操作, 下载并安装了DataNitro,在安装的时候脑残的安装了Python2.7.5,但是这两天在用的时候,发现之前安装的一些包后不能用了: print sys.path 才知道,Python的搜索路径变成了Python2.7.5的路径了,傻眼了,怎么办? 于是,一通百度,google之后,折腾了一个上午,终于搞定了: 首先,我在cmd里面是可以正常使用Pyt

使用Python实现一个简单的项目监控

在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互.随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了. 这个接口系统刚刚开发不久,整个系统中,处于比较边缘的位置,不像其他项目,有日志库,还有短信告警,一旦出问题,很多情况下都是用户反馈回来,所以,我的想法是,拿起python,为这个项目写一个监控.如果在调用某个第三方接口的过程中,大量出错了,说明这个接口有有问题了,就可以更快的采

python idle一些简单的小技巧

编辑状态时:Ctrl + [ .Ctrl + ] 缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 Alt+6 切换缩进方式 空格<=>TabAlt+/ 单词完成,只要文中出现过,就可以帮你自动补齐.多按几次可以循环选择Alt+M 打开模块代码,先选中模块,然后按下此快捷键,会帮你打开改模块的py源码供浏览Alt+C 打开类浏览器,方便在源码文件中的各个方法体之间切换Alt+FP 打开路径浏览器,方便选择导入包进行查看浏览F1 打开Python文档,比Editplus 方便吧,不

使用shell调用python中的函数

最近遇到一个需求,需要通过shell调用python中的一个函数,发现其实也挺简单的: python脚本如下: test.py: import ConfigParser config = ConfigParser.ConfigParser() config.read("test.conf") def get_foo(): return config.get("locations", "foo") def get_bar(): return con

python学习-ansible简单使用1

一.介绍 Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立. Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建. Ansible 特点: >> 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作.>> 默认使用 SSH(Secure Shell)协议对设备进行管

python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器

python之simplejson,Python版的简单. 快速. 可扩展 JSON 编码器/解码器 simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as json print json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) print json.dumps("\"foo\bar") print json