python结合shell脚本实现简单的日常集中巡检

本文介绍了一种使用Python进行数据库巡检的方法。通过配置环境并编写Python脚本,可以实现自动化巡检数据库状态和服务器负载,提高维护效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境配置

   1.说明

           下面的安装过程适合开发、调试Python脚本,如果是直接使用的话没有这么复杂。为了防止由于版本问题导致安装问题,请到http://pan.baidu.com/s/1nt1NKSh  下载所需软件(本人上传,链接不会失效)。

   2.安装过程(如果不是下载的安装包,除了python之外,其他都可以采用pip安装,更方便)

     1)安装python

             因为Python 本身不大,并且属于解释型语言,所以建议采用默认安装,即安装到C盘。 需要注意的是到下图步骤后点开标识的下拉箭头选择第一个,否则还需要手动配置环境变量。

    

 

    2)安装pycrypto,过程如图所示

     

      3)安装ecdsa,步骤同上

      4)安装paramiko,步骤同上

      5)修改文件        

              Python安装目录下:/Crypto/Random/OSRNG/nt.py 文件中找到

              import winrandom

              改成

              from Crypto.Random.OSRNG import winrandom

二、所需文件及其内容

    1.IP地址及口令文件

       创建一个名字为ip.txt的文本文件(只要跟python脚本中文件名字一致即可),内容格式:

       IP,username,password  

       参数说明:

       IP:远程服务器的IP地址

       username:oracle用户,即能登录sqlplus的用户

       password:oracle用户密码

       

   2.数据库巡检文件,代码如下

#!/bin/bash
. $HOME/.profile 
sqlplus -S  "/ as sysdba" <<EOF
host echo "**************** check Instance status************"
select status,database_status from v\$instance;
host echo "****************check database status************"
select log_mode,open_mode from v\$database;
EOF
echo "*********************check alter log file ***********"
dump=$(sqlplus -s "/ as sysdba" <<EOF
set head off
select value from v\$parameter where name='background_dump_dest';
exit
EOF)
startline=$(cat $dump/alert*.log |grep -n "$(date +'%a %b %e')"|head -1| awk -F: '{print $1}')
echo "Contains the ORA- line in the file:"
   if [ "$startline" = "" ]
      then
          echo "There is no information today."
      else
          awk -v line=$startline 'BEGIN{ORS="\n"}NR>line{print $0}' $dump/alert*.log |grep ORA- |wc -l
      fi
echo

echo "****************check listening status****************"
##startline=$(lsnrctl status|grep -n "Listening Endpoints Summary"| head -1 |awk -F: '{print $1}')
##lsnrctl status |awk -v line=$startline 'BEGIN{ORS="\n"}NR>=line{print $0}'
line=$(lsnrctl status |grep -n "The command completed successfully"| head -1 |awk -F: '{print $1}')
##echo $line
    if [ "$line" = "" ]
      then
          echo "can not get Listening info."
      else
          echo "Listening normal"
      fi
echo
echo "****************check disk space (above 90%)****************"
df |sed -e 's/%//'|awk '$5>90{print $0}' 

    3.数据库服务器状态文件

echo "********** memory ***********************"
free
echo " "
echo "********** disk space *******************"
df -Th
echo " "
echo "********** vm state ********************"
vmstat 2 3
echo " "
echo "********** load state ********************"
w
echo " "

  4.python脚本文件

import paramiko
import datetime
import os
##读取的脚本功能 1:巡检内容  2:负载状态
func=1
##读取当前路径
base_dir=os.getcwd()
##命令开始执行时间
starttime=datetime.datetime.now()
print(" -------------------------------------------------------------")
print("|                                                             |")
print("  startime:        ",starttime)
print("|                                                             |")
print(" -------------------------------------------------------------")
##注意路径前面的r,否则有些文件会当作转义字符处理
##读取命令脚本
if func==1:
    cmd_filepath=base_dir+r"\xunjian.txt"
else :
    cmd_filepath=base_dir+r"\fuzai.txt"
cmd_file=open(cmd_filepath,"r")
cmd=cmd_file.read()
##读取IP地址列表
ip_filepath=base_dir+r"\ip.txt"
ip_file=open(ip_filepath,"r")
while 1:    
    ipinfo=ip_file.readline()
    if not ipinfo :
        break
    else :
    ##读取IP,用户名,密码
         infos=ipinfo.split(',')   
         host=infos[0]
         username=infos[1]
         pwd=infos[2].strip()
         pwd=pwd.strip('\n')
    ##远程连接服务器
         client = paramiko.SSHClient()  
         client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
         client.connect(host, 22, username, pwd)
         stdin, stdout, stderr = client.exec_command(cmd)
         print(" -------------------------------------------------------------")
         print("|                                                             |")
         print("                      ",host)
         print("|                                                             |")
         print(" -------------------------------------------------------------")
         for line in stdout:  
             print(line.strip('\n'))  
         client.close()
         print("")
print('check complete................................')
##命令执行完成时间
endtime=datetime.datetime.now()
print(" -------------------------------------------------------------")
print("|                                                             |")
print("    endtime:      ",endtime)
print("|                                                             |")
print(" -------------------------------------------------------------")
print(" -------------------------------------------------------------")
print("|                                                             |")
print("  startime:       ",starttime)
print("  endtime:        ",endtime)
print("  cost:           ",endtime-starttime)
print("|                                                             |")
print(" -------------------------------------------------------------")

三、效果展示

1.数据库状态

2.服务器状态

 

转载于:https://www.cnblogs.com/lc1217/p/6729153.html

### 回答1: 编写shell脚本实现交换机的自动巡检,可以使用如下步骤: 1. 获取交换机的状态信息:使用命令行工具如 "snmpwalk" 或 "snmpget" 获取交换机的相关信息,包括端口状态、流量等。 2. 分析获取的信息:使用脚本语言,如 shellpython 等,分析获取的信息,并筛选出需要关注的信息,例如网络中存在的故障。 3. 报告问题:如果发现网络故障,则使用邮件、短信或其他方式将故障信息通知管理员。 4. 定时执行:使用 "cron" 等定时任务工具,定期执行自动巡检任务,保证网络的正常运行。 以上是编写自动巡检脚本的大致流程,具体实现方式可以根据实际情况调整。 ### 回答2: 编写Shell脚本实现交换机自动巡检可以通过以下步骤: 1. 首先,需要定义需要检查的交换机列表。可以将交换机的IP地址或主机名保存在一个文件中,例如switch_list.txt。 2. 在脚本中使用循环来遍历交换机列表。可以使用while或for循环结构。 3. 对于每个交换机,在脚本中执行需要的巡检命令。可以使用SSH或telnet等远程终端连接工具,以交换机的IP地址或主机名作为目标来执行巡检命令。例如,可以使用ping命令来测试交换机的可达性,使用show命令来获取交换机的配置、端口状态等信息。 4. 将巡检结果保存到一个文件中,例如switch_result.txt。可以使用重定向符号“>>”来将输出追加到文件中。 5. 可以在脚本中加入错误处理的功能。例如,当连接交换机失败时,输出错误信息并继续巡检下一个交换机。 6. 最后,当所有交换机都巡检完毕后,可以通过邮件或其他方式通知运维人员。可以使用邮件发送命令,将巡检结果文件作为附件发送给指定的邮箱。 通过编写这样的Shell脚本,可以实现交换机的自动巡检,节省了手动操作的时间和精力,并且可以提高巡检的准确性和效率。 ### 回答3: 编写shell脚本实现交换机自动巡检是一项涉及到网络设备自动化管理的任务。为了实现这个目标,你可以采取以下步骤: 1. 首先,需要在Shell脚本中定义交换机的IP地址和认证信息(例如用户名和密码)。 2. 使用SSH协议连接到交换机,并通过远程命令执行相关命令来获取交换机的状态和配置信息。可以使用expect工具来自动发送指令并接收结果。 3. 对于交换机的巡检,你可以编写脚本来获取交换机的名称、型号、固件版本等基本信息。 4. 进一步,你可以通过脚本获取交换机的端口状态、VLAN配置、链路聚合等详细信息。你可以使用命令如"show interfaces status"、"show vlan"等来获取这些信息。 5. 除了基本信息和配置,你还可以编写脚本来检查交换机的性能指标,如CPU利用率、内存利用率、带宽利用率等。你可以使用命令如"show processes cpu", "show processes memory"来获取这些信息。 6. 最后,你可以将巡检结果记录在日志文件中,以便后续分析和处理。 需要注意的是,具体的脚本实现会根据交换机的型号和操作系统而有所不同。你可能需要参考交换机的厂商文档,了解具体的命令和参数。同时,为了保证脚本的安全性,确保在交换机中配置了合适的访问控制和权限限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值