关于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