Debian – 安装LSI MegaRAID SNMP AGENT

我的操作系统是:

Distributor ID: Debian Description: Debian GNU/Linux 8.9 (jessie) Release: 8.9 Codename: jessie 

我成功安装了MegaRaid存储pipe理器,我可以使用StorCli。

 # dpkg --install lib-utils2_1.00-9_all.deb without errors # dpkg --install megaraid-storage-manager_17.05.00-3_all.deb without errors # ./storcli64 /c0 /vall show Controller = 0 Status = Success Description = None Virtual Drives : ============== --------------------------------------------------------------- DG/VD TYPE State Access Consist Cache Cac sCC Size Name --------------------------------------------------------------- 0/0 RAID1 Optl RW Yes RWBD - ON 278.464 GB OS 1/1 RAID5 Optl RW Yes RWBD - ON 8.180 TB DATA --------------------------------------------------------------- 

但现在,我会安装我的RAID控制器的snmp代理。 我使用了rpm,并将其转换成与外星人deb:

 # dpkg -i sas-snmp_17.05-3_amd64.deb (Lecture de la base de données... 54953 fichiers et répertoires déjà installés.) Préparation du dépaquetage de sas-snmp_17.05-3_amd64.deb ... Dépaquetage de sas-snmp (17.05-3) ... Paramétrage de sas-snmp (17.05-3) ... Starting snmpd /etc/lsi_mrdsnmp/sas/install: 182: [: 0: unexpected operator [ ok ] Restarting snmpd (via systemctl): snmpd.service. Starting LSI SNMP Agent /etc/lsi_mrdsnmp/sas/install: 210: [: 0: unexpected operator Starting LSI SNMP Agent: /etc/init.d/lsi_mrdsnmpd: 153: /etc/init.d/lsi_mrdsnmpd: daemon: not found 

我编辑了/etc/init.d/lsi_mrdsnmpd来解决守护进程命令的问题,将其replace为:

 .... ${agent} -c ${SNMPDCONF} #daemon ${agent} -c ${SNMPDCONF} .... 

而且,我添加了一个解决图书馆问题的符号链接:

 /usr/lib/libsas_objects.so -> /usr/lib64/libsas_objects.so.1 

但现在,当我尝试启动服务时:

 # ./lsi_mrdsnmpd start Starting LSI SNMP Agent: LSI MegaRAID SNMP Agent Ver 3.18.0.5 (Oct 30th, 2012) Started 

我在ps命令中没有任何东西。 如果我validation系统日志日志,我有:

 Oct 16 16:43:45 Server1 MegaRAID SNMP AGENT: Error in getting Shared Memory(lsi_mrdsnmpmain) 

如果我尝试手动执行命令:

 # ./lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf LSI MegaRAID SNMP Agent Ver 3.18.0.5 (Oct 30th, 2012) Started 

同样的结果在syslog上。

我试图把服务的开始放在一边:这里的第一步:

 16:46:54 fstat(3, {st_dev=makedev(8, 1), st_ino=8128118, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=2945, st_atime=2017/10/16-09:39:01, st_mtime=2017/05/02-08:24:20, st_ctime=2017/05/02-08:24:20}) = 0 16:46:54 fstat(3, {st_dev=makedev(8, 1), st_ino=8128118, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=2945, st_atime=2017/10/16-09:39:01, st_mtime=2017/05/02-08:24:20, st_ctime=2017/05/02-08:24:20}) = 0 16:46:54 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f712d916000 16:46:54 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0\0\0\0\..., 4096) = 2945 16:46:54 lseek(3, -1863, SEEK_CUR) = 1082 16:46:54 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\0\0\0\0\270\0\0\0\r\0\0\0\37\377\377\377\377k\310J\213\377\377\377\377\221`P\213\377\377\377\377\233Gx\360\377\377\377\377\233\327,p\377\377\377\377\234\274\221p\377\377\377\377\235\300H\360\377\377\377\377\236\211\376p\377\377\377\377\2..."..., 4096) = 1863 16:46:54 close(3) = 0 16:46:54 munmap(0x7f712d916000, 4096) = 0 16:46:54 socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 16:46:54 connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = 0 16:46:54 sendto(3, "<30>Oct 16 16:46:54 LSI MegaRAID SNMP Agent: Agent Ver 3.18.0.5 (Oct 30th, 2012) Started\n", 89, MSG_NOSIGNAL, NULL, 0) = 89 16:46:54 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f712d90ba10) = 4715 16:46:54 exit_group(0) = ? 16:46:54 +++ exited with 0 +++ 

但现在,我被封锁了,我不知道要解决这个问题,你有没有想到这个?

谢谢,

编辑

那么,今天的服务正在运行:

 root 16777 1 0 16:35 ? 00:00:00 /etc/lsi_mrdsnmp/lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf root 16778 16777 0 16:35 ? 00:00:00 /etc/lsi_mrdsnmp/lsi_mrdsnmpagent -c /etc/snmp/snmpd.conf 

youpi!

但是…当我尝试通过lsi_mrdsnmpmain将OID传递给代理时,它不返回任何结果代码为1:

 # /usr/sbin/lsi_mrdsnmpmain -g .1.3.6.1.4.1.3582.5.1.1.0 # echo $? 1 

我straces服务lsi_mrdsnmpagent,我可以读取,每次我尝试lsi_mrdsnmpmain:

 futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0 write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor) futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1 futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0 write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor) futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1 futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL) = 0 write(1, "####INSIDE GET#####\n", 20) = -1 EBADF (Bad file descriptor) futex(0x7f61f938e020, FUTEX_WAKE, 1) = 1 futex(0x7f61f938e000, FUTEX_WAIT, 0, NULL 

如果我strace lsi_mrdsnmpmain我得到:

 15:41:36 rt_sigaction(SIGRT_1, {0x7fe5257a8a40, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fe5257b1890}, NULL, 8) = 0 15:41:36 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 15:41:36 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 15:41:36 shmget(0x884b9, 1024, 0600) = 131072 15:41:36 shmat(131072, 0, 0) = 0x7fe525bdc000 15:41:36 futex(0x7fe525bdc000, FUTEX_WAKE, 1) = 1 15:41:36 futex(0x7fe525bdc020, FUTEX_WAIT, 0, NULL) = 0 15:41:36 shmdt(0x7fe525bdc000) = 0 15:41:36 exit_group(1) = ? 15:41:36 +++ exited with 1 +++ 

如果您有关于EBADF(错误的文件描述符)的想法或访问mib的想法…

谢谢 !

好!! 现在它完美的工作。 为了回答我自己的问题,来自lsimrdsnmpmain的错误来自snmpd进程启动的用户。 在我的conf中,守护进程snmpd是以用户snmp启动的,守护进程lsimrdsnmpagent是以root用户启动的。 我在/etc/defaults/snmpd.conf中修改了用户os守护进程snmpd,现在这两个进程可以很好地协作。

我希望这个回应会帮助其他想要在debian上运行lsi megaraid sas工具的人。