zabbix 报警测试报错

一、报错描述

在测试报警媒介时,报错如下:

zabbix 报警测试报错_第1张图片

main.py脚本是在windows上的pycharm上编写的,在windows上运行没有问题,放在linux服务器上使用python3 main.py 运行也没有问题,但是使用./main.py执行就报错

[root@p0-tkhijbs-broadco-app02 alertscripts]# ./main.py pangbb 测试主题 测试消息
-bash: ./main.py: /bin/python3^M: bad interpreter: No such file or directory

这说明zabbix 也是使用./的形式执行报警脚本的。

二、报错原因

[root@p0-tkhijbs-broadco-app02 alertscripts]# file main.py 
main.py: Python script, ASCII text executable, with CRLF line terminators
[root@p0-tkhijbs-broadco-app02 alertscripts]# cat -v main.py 
#!/bin/python3^M
^M
^M
from send_feishu import config,get_token^M
from send_feishu.check_user_id import check_user_id^M
import requests,json,sys,time^M
^M
^M
oa_num = sys.argv[1]^M
subject = sys.argv[2]^M
context = sys.argv[3]^M

此时发现会在每行行末加多一个^M,Linux不识别,具体可以查看CRLF和LF的区别。

三、解决办法

1.方法1

修改pycharm配置

点击 文件 --> 设置 --> 编辑器 —> 代码样式 --> 行分隔符 改为 “Unix和macOS(\n)”

2.方法2

使用vim 打开文件

末行模式输入
:set ff 或 :set fileformat

得到结果如下:
fileformat=dos(Windows上的文件格式) 或 fileformat=unix(Linux上的文件格式)
修改文件格式为unix
set ff=unix  或者 set fileformat=unix

回车之后没反应,wq保存即可。

你可能感兴趣的:(liunx,zabbix)