我的服务器上安装了Nagios和Oracle sqlplus客户端.Sqlplus运行需要很少的环境变量,所以我添加了导出/etc/profile.
以root身份登录设置变量,登录为用户nagios设置也没关系但是当我从nagios web界面运行一些检查(这些检查是用bash编写的)时,它们会以错误结束Error: Empty result from sqlplus. Check plugin settings and Oracle status.
当我从终端以root身份运行这些检查时nagios用户,一切都很好,这就是我发现问题在env变量中的方式.
我会很高兴有任何建议.
请帮助我理解字符串相等的一个奇怪问题.这是我正在谈论的代码:
my $test=undef;
foreach my $List (@o_descrL) {
if (!($test)) {
$test = defined($o_noreg)
? $descr_d eq $List
: $descr_d =~ /$List/i;
printf("$descr_d = $List\t\t==> $test\n");
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我没有写它但我必须理解它.$List始终是"SQL Server(C4)",$descr_d正在根据数组中的实际项目进行更改.打印输出的一部分在这里:
Power = SQL Server (C4) ==>
SQL Server (C4) = SQL Server (C4) ==>
SNMP Service = SQL Server (C4) ==>
Network Connections = SQL Server (C4) ==>
Run Code Online (Sandbox Code Playgroud)
如您所见,输出第二行中的字符串相等.那为什么不是$test真的呢?
编辑:我已经打印了一些更多的输出,并发现,当$descr_d eq $List它,它等于,但不是如果$descr_d =~ $List.你能解释一下这个$test变量究竟是什么吗?我不明白defined() ? :这里的意思是什么. …
for item in "1,2,3,4,5,6".split(","):
Run Code Online (Sandbox Code Playgroud)
我需要将列表反转为前6个,然后是5个...有没有想到如何更有效地执行此操作而不是先将其反转然后再使用它?有些功能我还不知道吗?
我是盲人还是没有错误.我认为这可能是第一选择.请帮我在大海捞针找到针.这是我的错误列表的一部分:
server.cpp: In function ‘int main(int, char**)’:
server.cpp:64:16: error: expected primary-expression before ‘=’ token
server.cpp:71:14: error: expected primary-expression before ‘=’ token
server.cpp:71:24: error: expected primary-expression before ‘)’ token
server.cpp:71:24: error: expected ‘;’ before ‘)’ token
server.cpp:72:12: error: expected primary-expression before ‘=’ token
server.cpp:80:10: error: expected primary-expression before ‘=’ token
make: *** [server] Error 1
Run Code Online (Sandbox Code Playgroud)
这是我的代码的一部分:
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <netdb.h>
#include <iostream>
#include <regex.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <string>
#include …Run Code Online (Sandbox Code Playgroud)