一、环境配置

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.服务器状态

python结合shell脚本实现简单的日常集中巡检的更多相关文章

  1. python编写shell脚本详细讲解

    python编写shell脚本详细讲解 那,python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它 ...

  2. Python 调用 Shell脚本的方法

    Python 调用 Shell脚本的方法 1.os模块的popen方法 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出. > ...

  3. 【转】shell脚本实现多台服务器自动巡检--可参考学习

    shell脚本实现多台服务器自动巡检   摘要:           运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU.内存.磁盘空间是否在正常值范围内.像 ...

  4. shell脚本实现多台服务器自动巡检

    shell脚本实现多台服务器自动巡检 摘要:         运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU.内存.磁盘空间是否在正常值范围内.像这样每天 ...

  5. 日常运维中的相关日志切割处理方法总结 [Logrotate、python、shell脚本实现 ]

    对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ...

  6. Shell脚本,简单& 强大

      摘自<码农增刊Linus与Linux>,章节:你可能不知道的Shell.   最近阅读完这本书,觉得其中有很多不错的内容,这是其中的一个Shell小甜点,拿来和大家一起分享一下,增加了 ...

  7. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

  8. 利用python执行shell脚本 并动态传参 及subprocess基本使用

    最近工作需求中 有遇到这个情况  在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法   最后还是选择了subprocess这个python标准库 su ...

  9. jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

    jenkins的安装这里就不做描述了,很简单的  百度搜索一下即可 这里安装的jenkins-2.39-1.1 wget http://pkg.jenkins-ci.org/redhat/jenkin ...

随机推荐

  1. curl javaSSm框架中传入json数组的格式方法

    curl与java结合传入get.post,head请求, 比如: curl的地址: curl -l 127.0.0.1:8080/spacobj/core/do?acid=100 -H " ...

  2. SQL AlawaysOn 之一:安装域控制器

    一.准备阶段 1.  计算机名称命名 2.IP地址修改.DNS修改 IP地址和DNS不一定要和图上的一致,只要固定就行了 二.安装阶段 1.服务器管理器,仪表盘,点击“添加角色和功能” 2.添加角色和 ...

  3. linux系统各种乱码问题

    linux系统乱码问题 最近使用ubuntu操作系统(客户端)在ssh连接linux服务器的时候发现乱码问题,但是本机查看中文显示中文没有问题,只是在使用终端more查看本地或远端gbk之类中文编码的 ...

  4. 解决Appium 抓取toast

    首先我们先看看这个gif,图中需要,要抓取的字符串--->请输入转让份数 1.要导入java-client-5.0.0-SNAPSHOT.jar 包的地址:链接:http://pan.baidu ...

  5. 数字千分位处理,number.js,js保留两位,整数强制保留两位小数

    杨龙飞 杨龙飞 杨龙飞 杨龙飞 杨龙飞 杨龙飞 官方文档:https://www.customd.com/articles/14/jquery-number-format-redux 1.千分位 $. ...

  6. IOS开发创建开发证书及发布App应用(六)——打包应用

    6.打包应用 如下图,生成之后点击下面红框的按钮,按时间排序,然后点最新的一次生成 从右侧生成日志中找到如下图红框标识的部分,找到 -output ,把下面浅蓝色选中,这是app生成的文件夹路径 点击 ...

  7. java中的==、equals()、hashCode()源码分析

    转载自:http://www.cnblogs.com/xudong-bupt/p/3960177.html 在Java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际 ...

  8. Wireless Intranet Captive Portal

    Wireless Intranet Captive Portal 配置AAA服务Radius认证 radius-server key 0 radius radius-server authentica ...

  9. Linux工具XFTP、Xshell(centos配置java环境 工具篇 总结一)

    ♣Xmanager5是什么? ♣安装XFTP ♣安装Xshell 1.Xmanager5(官网:https://www.netsarang.com/download/software.html)是全新 ...

  10. 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)

    <C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...