2021年10月

redhat linux7.3系统,安装11.2.0.4集群
(两个节点都要执行)

有问题的节点观察到的现象是
1,开机只有ohasd.bin ,init.ohasd进程,
2,系统日志显示 autorun file for ohasd is missing
3,检查ohasdrun 内容为reboot,用vi看后面多了个^@符号,看权限是root:oinstall 与正常节点对比,权限一样.

4,看了init.ohasd内容,感觉是因为判断ohasdrun文件存不存在的步骤没有正常进行,导致系统日志显示autorun file for ohasd is missing
不停循环每10s出现一次autorun file for ohasd is missing

5,kill掉init.ohasd 进程,系统自动重新运行init.ohasd进程后集群正常启动,所有资源正常.
其它操作都没有,只是kill /etc/init.d/init.ohasd run 进程之后集群就能正常启动了.
此时ohasdrun 显示restart

本来用excel的宏功能也能实现大部分,但是为了练习python语法,还是用pandas重新弄了一个脚本程序,基本满足需求,后面有时间再部署一个django的平台进行管理。
# -- coding: utf-8 --

import os
import pandas as pd
import configparser as cf

parent_dir = os.path.dirname(os.path.abspath(__file__))
cf = cf.ConfigParser()
try:
    cf.read(parent_dir + "\\config.ini")
except IOError:
    print("Error: 没有找到配置或读取文件失败")
else:
    print("读取配置文件成功")
sections = cf.sections()#获取配置文件中所有sections,sections是列表
# def xlsx(file):
#     file=cf.get('file', 'xlsx')
#
def main():

    workbookname = cf.get('xlsxfile', 'workbookname')
    workbookname=parent_dir+"\\"+workbookname

    sheetname1 = cf.get('xlsxfile', 'sheetname1')
    sheetname2 = cf.get('xlsxfile', 'sheetname2')
    xlsxcolums= cf.get('xlsxfile', 'xlsxcolums')
    sortcolums = cf.get('xlsxfile', 'sortcolums')
    screenkeywords1 = cf.get('xlsxfile', 'screenkeywords1')
    screenfactor1 = cf.get('xlsxfile', 'screenfactor1')
    screenfactor2 = cf.get('xlsxfile', 'screenfactor2')
    screenfactor3 = cf.get('xlsxfile', 'screenfactor3')
    screenfactor4 = cf.get('xlsxfile', 'screenfactor4')
    workbooknamenew = cf.get('xlsxfile', 'workbooknamenew')
    xlsxcolums = xlsxcolums.strip(',').split(',')

    xlsx1 = pd.read_excel(workbookname, sheet_name=sheetname1)
    xlsx2 = pd.read_excel(workbookname, sheet_name=sheetname2)
    xlsx1 = xlsx1.loc[:,xlsxcolums]
    xlsx1 = xlsx1.sort_values(by=sortcolums)
    xlsx1 = xlsx1.loc[(xlsx1[screenkeywords1] == screenfactor1) |(xlsx1[screenkeywords1] == screenfactor2)|(xlsx1[screenkeywords1] == screenfactor3)|(xlsx1[screenkeywords1] == screenfactor4)]
    xlsx2 = xlsx2.loc[:,xlsxcolums]
    xlsx2 = xlsx2.sort_values(by=sortcolums)
    xlsx2 = xlsx2.loc[(xlsx2[screenkeywords1] == screenfactor1) |(xlsx2[screenkeywords1] == screenfactor2)|(xlsx2[screenkeywords1] == screenfactor3)|(xlsx2[screenkeywords1] == screenfactor4)]
    xlsx = xlsx1.append(xlsx2)
    try:
        xlsx.to_excel(parent_dir + "\\" + workbooknamenew)
        print("更新成功")
    except IOError:
        print("Error: 保存文件失败")


    #     xlsx.to_excel(parent_dir+"\\"+workbooknamenew)
    # except IOError:
    #     print("Error: 没有找到配置或读取文件失败")





# def resolveEnv(con):
#     if con.startswith('ENV_'):
#         return os.environ.get(con)
#     return con



if __name__ == "__main__":
    main()

import pandas as pd

df1 = pd.DataFrame([1, 2, 3])
print(df1.columns)
df2 = pd.DataFrame([1, 2, 4])
xlsx = pd.read_excel(r"C:\Users\Administrator\PycharmProjects\pythonProject2\venv\工单记录.xlsx", sheet_name='区级数据修改')
xlsx1 = pd.read_excel(r"C:\Users\Administrator\PycharmProjects\pythonProject2\venv\工单记录.xlsx", sheet_name='市级数据修改')
# tiaojian=xlsx['工单状态']
print(type(xlsx))
# print(xlsx)
# print(xlsx.columns) #打印列标题
# print(xlsx.index) #打印行索引
# print(xlsx.shape)
xlsx=xlsx.loc[:,['工单状态','工单编号','子系统','数据库名称','数据库IP地址','标题']] #取出指定的列
xlsx1=xlsx1.loc[:,['工单状态','工单编号','子系统','数据库名称','数据库IP地址','标题']] #取出指定的列
xlsx=xlsx.sort_values(by='数据库IP地址')#排序
xlsx=xlsx.loc[(xlsx['工单状态']=='已撤销')  | (xlsx['工单状态']=='审批中')] #取出满足多个条件的行,同时满足用&
xlsx1=xlsx1.loc[(xlsx1['工单状态']=='已撤销')  | (xlsx1['工单状态']=='审批中')] #取出满足多个条件的行,同时满足用&
xlsx1=xlsx1.sort_values(by='数据库IP地址')#排序
# xlsx=xlsx.loc[xlsx['工单状态']=='已撤销'] #取出满足条件的行
print(xlsx.shape) #输出总行数和列数,要+1.

print(xlsx1.shape)



xlsx=xlsx.append(xlsx1)
# df1.to_excel(r'C:\Users\Administrator\PycharmProjects\pythonProject2\venv\test1.xlsx')
# df2.to_excel(r'C:\Users\Administrator\PycharmProjects\pythonProject2\venv\test2.xlsx')
print(xlsx.shape)
xlsx.to_excel(r'C:\Users\Administrator\PycharmProjects\pythonProject2\venv\test3.xlsx')
#
# ,'数据库名称','数据库IP地址','标题'

利用pandas选取某个属性符合指定条件的所有行
最近遇到利用pandas选取指定行的需求,经常忘记,在此做下记录

选取某个属性等于特定值的所有行记录
df[(df[‘column_name’] == target_value)]
注:等于用 '==',不等于用 '!=', 同理,大于用 '>', 小于用 '<'

多个条件用 '&' 连接
df[(df[‘column_name’] < target_value) & (df[‘column_name’] > target_value)]
选取某个属性在指定列表中的所有行记录
df[(df[‘column_name’].isin(list))]
注:若选取不在列表中的行记录,加上'~'即可,即

df[~(df[‘column_name’].isin(list))]