关于django的一点感想

本文讲述了作者在Django环境下,如何在OpenStack的dashboard中处理一个涉及nagios配置和监控的问题。在尝试通过Python脚本更新nagios配置并重启服务时,遇到了权限问题。最终通过在rootwrap过滤器中增加命令权限解决了这个问题。

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

关于django的一点感想

问题产生的由来

Django执行linux环境下的某个Python脚本,我所在的环境更复杂一些,我直接改动了openstack P版本源码,在系统——系统信息下新增了一个栏目——系统监控,此处显示的是nagios存入数据库的数据,你肯定猜到了,为了监控主机的状况,如果你一定要问我,为什么要用这样像是脑子进水了一样的办法
在这里插入图片描述
,言归正传,我现在要达到的目标就是,在我openstack上新增的告警管理的界面中传下一个邮箱地址信息,然后打开nagios配置文件,将这个邮箱地址写进nagios配置文件中,还有,重启nagios,让他生效。
顺带一提,我的是openstack创建的centos7的虚拟机。
重点的地方在于执行权限的问题

def change_nagios_get_email(nagios_cfg, target_str, host_alarm_to_email):
    """
    替换文件中的行
    :param file:文件名
    :param line_num:旧行行号
    :param new_str:新行
    """
    lines = []
    with open(nagios_cfg, 'r+') as f:
        lines = f.readlines()
    with open(nagios_cfg, 'w+') as f:
        for i in range(len(lines)):
            if re.search(target_str, lines[i]) is not None:
                f.write(host_alarm_to_email)
            else:
                f.write(lines[i])


这段代码直接在后台用Python xxx.py的方式跑是没问题的,可加进openstack的dashboard就爆炸,后来经过大腿指导在/usr/share/nova/rootwrap/compute.filters里增加了命令的执行权限,终于正常执行了

sed:   CommandFilter, sed,   root
virsh: CommandFilter, virsh, root
rm:    CommandFilter, rm,    root
mv:    CommandFilter, mv,    root
lsusb: CommandFilter, lsusb, root
dmidecode:CommandFilter,dmidecode,root
wol:   CommandFilter, wol,   root
df:    CommandFilter, df,    root
python:    CommandFilter, python,    root
sed:   CommandFilter, sed,   root
virsh: CommandFilter, virsh, root
rm:    CommandFilter, rm,    root
mv:    CommandFilter, mv,    root
lsusb: CommandFilter, lsusb, root
dmidecode: CommandFilter,dmidecode, root
wol:   CommandFilter, wol,   root
df:    CommandFilter, df,    root
arp-scan:    CommandFilter, arp-scan,    root
python:    CommandFilter, python,    root
ll:    CommandFilter, ll,    root
source:    CommandFilter, source,    root
cat:   CommandFilter, cat,   root
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值