安装MegaRAID存储管理器17.05.06版的好一番折腾(Linux篇)

作者:Sender  来源:WaveCN.com  发布日期:2023-02-01  最后修改日期:2023-02-01

其实会有人问,为何要升级?

article banner

笔者:国际认证信息系统审计师、软考系统分析师

17.05.06版本是被定义为“Critical”级别的升级,在于移除了log4j这个组件。如果有关注网络安全,都应该知道log4j的“核弹级”漏洞的事情。所以这个版本是必须要升级的。

继上一篇《安装MegaRAID存储管理器17.05.06版的一番折腾(Windows篇)》之后,接着是在Linux环境下的折腾。如果不太了解情况的读者,可以先看看上一篇,以及更早的一篇入门级介绍:《安装 MegaRAID 存储管理器集中监控 DAS 存储状态》。

MSM这个版本在Linux环境下卸载安装的问题都比Windows版本复杂。折腾下来最大的感觉是MSM的开发人员有那么一种“反正你都用上Linux了,有问题你自己一定有能力搞定,所以我们就随便一点”的态度。

就以MSM的RPM包内容为例,把MSM的后台服务在运行时产生的DEBUG日志文件带上内容打包进去了,时间戳还是2014年;还有各种文件属性错误标记为可执行......真是无力吐槽。

所以这篇东西真的是折腾了我好久才弄出来。

那么下面介绍在 Linux 服务器环境的安装、升级和卸载,全文以CentOS 7为例。

1、从卸载之前的版本开始

如果要升级MSM,需要先卸载旧版本(17.05.00或更早版本)。按README,安装脚本能自动检查和卸载旧版本......实际很多问题。

那么先手工卸载?按README,用root用户运行卸载脚本uninstaller.sh即可,它会自动完成卸载......实际也是有问题。

问题后面再介绍。真正有效的卸载步骤和操作过程如下:

(1)检查是否有安装snmpd服务,如果没有,先补充安装; (2)手工停止正在运行的vivaldiframeworkd服务; (3)手工运行shutdown脚本,退出依然(!)在后台运行的java进程,注意要cd进入该目录后以sh带脚本文件名参数方式才能正常运行; (4)最后运行uninstaller.sh,完成安装。

yum install net-snmp net-snmp-utils
systemctl enable snmpd
systemctl stop vivaldiframeworkd
cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
sh shutdown.sh
cd ..
./uninstaller.sh

解释:

(1)MSM组成部分中的sas_snmp-17.05-0003 和 sas_ir_snmp-17.05-0003两个RPM包的卸载脚本设置了从snmpd服务中取消登记的过程,如果服务器上没有安装snmpd服务,卸载过程会提示%preun脚本执行失败,sas相关两个软件包删除失败,卸载中止:

Uninstalling sas_ir_snmp-16.05-0200
Unregistering Service
Failed to start snmpd.service: Unit not found.
错误:%preun(sas_ir_snmp-16.05-0200.x86_64) 脚本执行失败,退出状态码为 5
错误:sas_ir_snmp-16.05-0200.x86_64: 删除 已失败
Uninstalling sas_snmp-16.05-0200
Unregistering Service
Failed to start snmpd.service: Unit not found.
错误:%preun(sas_snmp-16.05-0200.x86_64) 脚本执行失败,退出状态码为 5
错误:sas_snmp-16.05-0200.x86_64: 删除 已失败

绝对不能使用rpm的--noscripts参数强制忽略脚本而卸载sas相关软件包。因为卸载脚本执行的操作不仅是取消模块登记,还包括了各种配置文件和启动服务的清理,忽略脚本就会导致该清理的没有清理。

(2)如果不先行完全停止后台服务,有可能会提示有活动的客户端连接(实际并没有)而不能卸载,出错信息如下:

Uninstalling MegaRAID_Storage_Manager-16.05.04-00
Framework running
Inside loadVivaldikeyProp
localePath for res file::zh
frameworkWWN :192.168.49.51:3071:0
frameworkWWN :192.168.49.51:3071:0
System time before socket connection:Fri Jan 13 15:36:02 CST 2023
SSL_STRONG_ENCRYPTION  File Name is ::./StrongSSLEncryption.ini
iniFlag isDISABLE
frameworkWWN :192.168.49.51:3071:0
LOCAL Registered client :: 127.0.0.1:0:8
LOCAL Registered client :: 127.0.0.1:49260:1
REMOTE Registered client :: 192.168.140.1:49276:4
LOCAL Registered client :: 192.168.49.51:3071:0
REMOTE Registered client :: 192.168.140.1:49263:3
LOCAL Registered client :: 127.0.0.1:49261:2
frameworkWWN :192.168.49.51:3071:0
ActiveClientList created
The machines with the following IP(s) has active Client connected to this server.
192.168.140.1
Disconnect all the connections or shutdown Framework and retry.
错误:%preun(MegaRAID_Storage_Manager-16.05.04-00.noarch) 脚本执行失败,退出状态码为 1
错误:MegaRAID_Storage_Manager-16.05.04-00.noarch: 删除 已失败

见上文提示“The machines with the following IP(s) has active Client connected to this server.”

另外,由于systemctl stop操作并未能有效调用shutdown.sh去停止后台服务,只是更改了服务的状态而已。所以要手工执行shutdown.sh脚本。

2、然后是安装过程

假设所有的安装材料均已经上传到服务器并放置在/root/msm目录内,如下:

[root@server ~]# ll msm
-rw-r--r--. 1 root root 47089267 2月  24 2022 17.05.06.00_MSM_Linux-x64.zip
-rw-r--r--. 1 root root     3158 1月  31 16:32 fixed_msm_scripts.tar.gz
-rw-r--r--. 1 root root    78030 1月  11 10:45 javax.activation.jar
-rw-r--r--. 1 root root 41349408 1月  12 21:46 OpenJDK8U-jre_x64_linux_hotspot_8u352b08.tar.gz

其中 fixed_msm_scripts.tar.gz 是本人对MSM的脚本修改调整后的打包文件,可以通过以下百度网盘链接下载:

baidu pan share

链接:https://pan.baidu.com/s/1fNHo_eQ7sFw6L4VXiS-2fA?pwd=ykdg

提取码:ykdg

整个安装过程操作汇总如下:

# 确保已经安装snmpd,并启用
yum install net-snmp net-snmp-utils
systemctl enable snmpd
# 进入安装材料目录,解压安装包,其中MSM要解压两次
cd /root/msm
tar zxf fixed_msm_scripts.tar.gz
tar zxf OpenJDK8U-jre_x64_linux_hotspot_8u352b08.tar.gz
unzip 17.05.06.00_MSM_Linux-x64.zip
tar zxf MSM_linux_x64_installer-17.05.06-00.tar.gz
# javax.activation.jar放入jre的bin目录
mv javax.activation.jar jdk8u352-b08-jre/bin
# 覆盖有问题的检查删除旧版本的脚本
\\cp fixed_msm_scripts/deleteOldVersion.sh ./disk
# 直接完整安装
cd disk
./RunRPM.sh
# 检查是否后台服务已经在运行,若是,停止服务
ps aux | grep FrameworkManager 
systemctl stop vivaldiframeworkd
# 再检查一次,因为服务基本上是没有停。若未停,手工执行脚本停掉服务
ps aux | grep FrameworkManager
cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
./shutdown.sh
# 配置环境,创建符号链接避免目录名中的空格干扰
ln -s /usr/local/MegaRAID\\ Storage\\ Manager/ /usr/local/msm
# 私有化转入JRE并缩短目录名
mv /root/msm/jdk8u352-b08-jre/ /usr/local/msm/jre
chcon -u system_u -t usr_t -R /usr/local/msm/jre
# 替换脚本,实现使用私有JRE运行
cd /root/msm/fixed_msm_scripts/
\\cp msm_profile /etc/rc.d/init.d
\\cp vivaldiframeworkd /etc/rc.d/init.d
\\cp startup.sh /usr/local/msm/Framework/
\\cp shutdown.sh /usr/local/msm/Framework/
\\cp startupui.sh /usr/local/msm
# 重新加载守护进程服务信息,启动服务和检查服务状态
systemctl daemon-reload
systemctl start vivaldiframeworkd
systemctl status vivaldiframeworkd
ps aux | grep FrameworkManager
# 启动客户端,尝试发现、登录和操作
cd /usr/local/msm
./startupui.sh
# 完成后,删除/etc/profile文件中调用msm_profile的行。
sed -i '/msm_profile/d' /etc/profile

以上过程详细解释如下:

(1)如果未安装启用snmpd服务,则安装sas_snmp和sas_ir_snmp两个RPM包时都会报告如下的执行安装后脚本出错:

Installing sas_snmp-17.05-0003
Preparing...                          ################################# [100%]
Updating / installing...
   1:sas_snmp-17.05-0003              ################################# [100%]
/etc/snmp/snmpd.conf file not found. Please check the filepath
Exiting .....
warning: %post(sas_snmp-17.05-0003.x86_64) scriptlet failed, exit status 1
Installing sas_ir_snmp-17.05-0003
Preparing...                          ################################# [100%]
Updating / installing...
   1:sas_ir_snmp-17.05-0003           ################################# [100%]
/etc/snmp/snmpd.conf file not found. Please check the filepath
Exiting .....
warning: %post(sas_ir_snmp-17.05-0003.x86_64) scriptlet failed, exit status 1

(2)解压OpenJDK 8 JRE后要放入javax.activation.jar到其内的 bin 目录。

mv javax.activation.jar jdk8u352-b08-jre/bin

(3)修正 deleteOldVersion.sh 检查和删除旧版本的脚本的一个错误:

./deleteOldVersion.sh: 第 20 行:[: =: 期待一元表达式

原因是upgradesetuptype变量不一定有被赋值,导致该行判断出错。修正方法是把该行的判断条件从单中括号改为用双中括号括住,如下图的第21行:

deleteOldVersion.sh code fix

(4)为了简化安装过程,直接运行安装包解压目录下的RunRPM.sh而不执行install.csh。相当于完整安装,所有选项都是按默认。

这种方式不需要为安装脚本 installer.csh 在系统上安装已经被淘汰的c shell,从奥卡姆剃刀原理出发,这种方式更好。

吐槽:实际整个MSM软件包就只有这一个脚本需要c shell,它就应该基于bash重写!而且它还有语法嵌套错误!问答过程不直观还容易误导!

至于安装过程的那几个选择其实已经没必要去考虑。

选择完整安装,就算服务器上没有启用GUI环境,也不会有问题,只是即时告警功能不生效,本机客户端用不了。只要MSM后台服务能正常运行,服务器的远程管理就能实现。

其它选项:加密证书位数、告警事件范围,都可以通过修改配置文件来调节。

(5)如果操作系统环境中已经存在可用的Java环境,在安装后MSM的后台服务就有可能已经启动运行。可以通过ps进行检查,例如:

[root@server ~]# ps a | grep FrameworkManager | grep -v grep
  7044 pts/0    Sl     0:03 /bin/java -classpath /bin/javax.activation.jar:rt.jar:jsse.jar:jce.jar:javax.mail.jar:Framework.jar -Djava.library.path=. Framework.FrameworkManager

如上结果即服务正在运行。在后续配置前应先杀掉该java进程。由于进程停止的脚本有BUG,简单的:

systemctl stop vivaldiframeword

实际并没有让java进程终止。所以要KILL或者像笔者这样手工运行shutdown.sh:

cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
./shutdown.sh

去停止服务进程。

(6)配置私有JRE运行环境,重点在于MSM的安装目录名有空格,会导致MSM服务启动脚本中定义的 LD_PRELOAD 环境变量在被ld.so处理时出错:

ERROR: ld.so: object 'amd64/libjsig.so' from LD_PRELOAD cannot be preloaded: ignored.

MSM服务就会启动失败。原因是ld.so对LD_PRELOAD的处理过程不支持对路径中的空白字符进行任何转义操作。关于ld.so,可参考:

https://www.man7.org/linux/man-pages/man8/ld.so.8.html

解决办法是通过符号链接绕过这个问题。

因此,在/usr/local下创建名为msm的符号链接到 /usr/local/MegaRAID Storage Manager 目录。

ln -s /usr/local/MegaRAID\\ Storage\\ Manager/ /usr/local/msm

(7)移动OpenJD 8 JRE的目录到MSM的安装目录下,顺便把目录名改短,比如改成 jre。

mv jdk8u352-b08-jre/ /usr/local/msm/jre
chcon -u system_u -t usr_t -R /usr/local/msm/jre

注意上面的操作还包括了面向启用了SELinux后要设置正确的文件CONTEXT。

要确保以上操作完成后,必须能得到如下结果:

MSM的安装目录可以通过 /usr/local/msm 访问

jre的所在目录可以通过 /usr/local/msm/jre 访问

(8)修改(替换)运行脚本

由于脚本引用JAVA运行环境完全依赖于JRE_HOME环境变量,由此所产生的冲突问题最突出。因此我自己全部收拾了一遍,按逻辑顺序列出如下:

a. 后台服务的操作脚本:

/etc/init.d/msm_profile
/etc/init.d/vivaldiframeworkd

b. 后台服务的启动和停止脚本

/usr/local/msm/Framework/startup.sh
/usr/local/msm/Framework/shutdown.sh

c. 客户端的启动脚本

/usr/local/msm/startupui.sh

这些脚本的修改目标是一致的:用MSM自己的JRE_HOME环境变量,覆盖取代ROOT用户的(面向全局的)JRE_HOME环境变量。

由于篇幅太长,微信这边贴了也没啥意义。所以提供了网盘下载,也可以点击“阅读原文”到作者网站查看,挂在网站文章网页的最后面了。

下载,解压,然后小心而正确地替换掉以上脚本(假设解压后目录名为fixed_msm_scripts):

\\cp fixed_msm_scripts\\msm_profile /etc/rc.d/init.d
\\cp fixed_msm_scripts\\vivaldiframeworkd /etc/rc.d/init.d
\\cp fixed_msm_scripts\\startup.sh /usr/local/msm/Framework/
\\cp fixed_msm_scripts\\shutdown.sh /usr/local/msm/Framework/
\\cp fixed_msm_scripts\\startupui.sh /usr/local/msm

完成脚本文件的修改或覆盖替换后,务必全面复查脚本文件的属性,包括文件的所有者、读写执行权限以及如果启用了SELinux,检查CONTEXT。大致如下,因为都经过了修正,和原安装后的混乱情况会有所不同:

[root@server init.d]# ll -Z msm_profile vivaldiframeworkd
-rwxr-xr-x. 1 root root system_u:object_r:initrc_exec_t:s0  461 1月  29 12:44 msm_profile
-rwxr-xr-x. 1 root root system_u:object_r:initrc_exec_t:s0 2219 1月  13 2022 vivaldiframeworkd
[root@server msm]# ll -Z startupui.sh
-rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 309 4月  23 2021 startupui.sh
[root@server Framework]# ll -Z *.sh
-rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 276 4月  23 2021 shutdown.sh
-rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 333 4月  23 2021 startup.sh

(9)启动服务

执行如下命令重新加载守护进程定义给systemd:

systemctl daemon-reload

启动MSM后台服务:

systemctl start vivaldiframeworkd

注:MSM后台服务的 systemd 服务描述定义文件是在:

/run/systemd/generator.late/vivaldiframeworkd.service

有需要可以自行修改。

(10)通过客户端连接测试

如果服务器安装了GUI,启动客户端,登录并检查日志和进行操作测试。

如果服务器未安装GUI,则在确认防火墙端口已经正确开启后,在终端计算机上启动MSM客户端,尝试发现服务器,并连接到服务器进行测试。

3、修改调整运行参数

(1)服务端可能需要调整的运行参数主要包括:

/usr/local/msm/Framework/eventnotificationchoice.properties

该文件控制加载的日志范围,需要哪一种范围就只取消该行的注释并注释掉其它行:

[root@server Framework]# cat eventnotificationchoice.properties
#EVENT_NOTIFICATION_CHOICE=reboot
EVENT_NOTIFICATION_CHOICE=clear
#EVENT_NOTIFICATION_CHOICE=shutdown

如果要调整通信加密秘钥的长度,修改这个文件:

/usr/local/msm/Framework/vivaldikey.properties

内容其实就是二选一:

[root@server Framework]# cat vivaldikey.properties
##########################################################################################
#       vivaldikey.properties enables the user to modify the keysize from 2048 to 1024
#       and vice-versa by commenting and uncommenting the key\\values
#       Please restart the MSM Framework service upon modification take effect.
#       vivaldikeys_2048 = key size of 2048
#       vivaldikeys = key size of 1024
###########################################################################################
VIVALDI_KEY_FILE = vivaldikeys2048
#VIVALDI_KEY_FILE = vivaldikeys

注意2048位已经是必要设置了,除非必须兼容很旧版本的MSM客户端,否则不需要调整。

修改配置文件后,要重启服务才能生效。

(2)客户端的设置则是这两个文件:

/usr/local/msm/msm.properties
/usr/local/msm/vivaldikey.properties

内容不重复介绍了,可以参考我之前的文章《安装 MegaRAID 存储管理器集中监控 DAS 存储状态》。

总结

Linux版本只是基于CentOS 7去介绍,其它发行版并未涉及,但原理是一致的,就是为MSM设置其私有的OpenJDK 8 JRE,避免和公共使用的JRE冲突。

最后补充一些特殊情况记录:

1、关于组播发现功能

如果在客户端选择组播发现MSM服务器,需要注意:组播发现不会发现本机上的MSM服务。需要在IP Address框内写上本机地址,才能避免组播发现后的服务器清单中唯独就是没有当前服务器的情况。

然后,无论Windows或Linux服务器,都需要在服务器本机防火墙允许组播协议。这对于Windows服务器需要启用如下图规则:

windows firewall allow multicast rule

对于Linux服务器,比如CentOS 7,需要设置如下规则:

firewall-cmd --add-protocol=igmp
firewall-cmd --add-rich-rule='rule family="ipv4" destination address="229.111.112.12" protocol value="ip" accept'
firewall-cmd --runtime-to-permanent
route add 229.111.112.12 dev em1

最后一句添加路由的操作非必须。如果测试发现不执行也能发现和连接服务器就不需要执行。如果需要执行,要放入rc.local,实现服务器开机后运行。

2、登录到Linux服务端后加载日志缓慢

发现当MSM服务器端是Linux时,客户端远程登录后的加载过程特别慢。暂时未找到原因。

最后是给出脚本源文件如下:

1、deleteOldVersion.sh

 1#!/bin/sh 
 2
 3echo "Checking for any Old Version"
 4searchcont=1
 5if [ $searchcont = 1 ]; then
 6  linecount=`rpm -qa | grep MegaRAID_Storage_Manager | wc -l`
 7  if [ $linecount = 0 ]; then
 8    status=1
 9  else
10  if [ $linecount = 1 ]; then
11    status=0
12  else
13    echo "More than one copy of MegaRAID Storage Manager has been installed. Exiting installation."
14    exit 1
15  fi
16fi
17
18#echo "setuptype is $setuptype";
19#echo "upgradesetuptype is $upgradesetuptype";
20if [ $linecount = 0 ]; then
21  if [[ $upgradesetuptype = 'u' ]]; then
22    echo "MSM is not installed on this system, MSM upgrade cannot proceed"
23    echo "Exiting MSM installation"
24    exit 1
25  fi
26fi
27
28if [ $status = 0 ]; then
29  newdate=1642093428
30  olddate=`rpm -q --queryformat "%{BUILDTIME}" MegaRAID_Storage_Manager`
31  if [ $newdate -gt $olddate ]; then
32    echo " MegaRAID Storage Manager is already installed $linecount"
33    echo " Select Y or N "
34    echo " Y, previous version of MSM will be uninstalled and latest MSM will be installed"
35    echo " N, No changes made to the system"
36    read ELU
37    #  echo "$ELU"
38    if [ "$ELU" != "y" -a "$ELU" != "Y" ]; then
39      echo "Exiting Installation " 
40      exit 1
41    fi
42    echo "Uninstalling Old version"
43    . /etc/init.d/msm_profile
44    "$MSM_HOME/.__uninst.sh"
45    status=$?
46    if [ $status = 0 ]; then
47      if [ -f "$MSM_HOME/.__uninst.sh" ]; then  
48        echo "Uninstall Failed. Exiting installation."
49        exit 1
50      fi
51      echo "Uninstall Completed Successfully"
52    else
53      echo "Uninstall Failed. Exiting installation."
54      exit 1
55    fi
56  else
57    if [ $newdate = $olddate ]; then
58      echo "The version is already installed."
59    else
60      echo "The installed version is newer."
61    fi
62    echo "Exiting installation."
63    exit 1
64  fi
65  else
66    echo "No Old Version Found"
67  fi
68fi
69echo "Continuing with installation"
70exit 0

2、msm_profile

 1#!/bin/sh
 2#
 3# msm_profile sets the environment variables
 4# chkconfig: 2345 99 00
 5# processname: msm_profile
 6### BEGIN INIT INFO
 7# Provides:          msm_profile
 8# Required-Start:    
 9# Required-Stop:
10# Default-Start:     2 3 4 5
11# Default-Stop:      0 6
12# Description:      msm_profile
13### END INIT INFO
14
15# 为从系统默认路径中删除公共性质的JRE路径,需要如下这个函数
16function path_remove {
17  # Delete path by parts so we can never accidentally remove sub paths
18  if [ "$PATH" == "$1" ] ; then PATH="" ; fi
19  PATH=${PATH//":$1:"/":"} # delete any instances in the middle
20  PATH=${PATH/#"$1:"/} # delete any instance at the beginning
21  PATH=${PATH/%":$1"/} # delete any instance in the at the end
22}
23
24# 保留原有的环境变量输出
25MSM_HOME="/usr/local/MegaRAID Storage Manager"
26export MSM_HOME
27PRODUCTNAME="MegaRAID Storage Manager"
28export PRODUCTNMAME
29MSM_PRODUCT=MSM
30export MSM_PRODUCT
31
32# 从系统默认路径中删除JAVA_HOME相关路径
33if [ "$JAVA_HOME" != "" ] ;    
34then 
35    TODEL=$JAVA_HOME/bin
36    path_remove $TODEL
37    TODEL=$JAVA_HOME/jre/bin
38    path_remove $TODEL
39  path_remove $JAVA_HOME
40fi
41
42# 从系统默认路径中删除JRE_HOME相关路径
43if [ "$JRE_HOME" != "" ] ;    
44then 
45    TODEL=$JRE_HOME/bin
46    path_remove $TODEL
47  path_remove $JRE_HOME
48fi
49
50# 修改系统默认路径,加入私有的JRE
51# 注意:需要预先创建符号链接到MSM的安装目录,从而避免目录名中的空格引入LD_PRELOAD导致ld.so出错。
52MSM_HOME_LINK="/usr/local/msm"
53JRE_HOME=$MSM_HOME_LINK/jre
54PATH=$JRE_HOME/bin:$PATH
55LD_LIBRARY_PATH=.:$JRE_HOME/lib:$JRE_HOME/lib/amd64:$JRE_HOME/lib/amd64/jli
56CLASSPATH=.:$JRE_HOME/lib:$JRE_HOME/lib/amd64:$JRE_HOME/lib/amd64/jli
57export JRE_HOME PATH LD_LIBRARY_PATH CLASSPATH
58
59# for debug
60#echo $MSM_HOME
61#echo $MSM_HOME_LINK
62#echo $JRE_HOME
63#echo $PATH
64#echo $LD_LIBRARY_PATH
65#echo $CLASSPATH

3、vivaldiframeworkd

  1#!/bin/bash
  2#description: Framework serice startup/shutdown script
  3# chkconfig: 2345 99 00
  4### BEGIN INIT INFO
  5# Provides:          Framework
  6# Required-Start:    $syslog
  7# Required-Stop:     
  8# Default-Start:     2 3 4 5
  9# Default-Stop:      0 6
 10# Description:      vivaldiframework service
 11### END INIT INFO
 12#Function to check status of Framework service
 13source /etc/profile
 14
 15check_status() {
 16    . /etc/init.d/msm_profile
 17    x=`ps -ef|grep java|grep Framework.jar`
 18    if [ "$x" = "" ] ; then
 19        return 3;
 20    fi
 21    return 0
 22}
 23
 24#Function to start Framework service
 25start() {
 26    \\rm -f /tmp/network_present
 27    . /etc/init.d/msm_profile
 28    network_flag=0
 29    for (( i=0; i < 20; i++ ))
 30    do
 31        if [ -f "$MSM_HOME_LINK/Framework/TestNetworkCapability.class" ]
 32        then
 33            echo "$MSM_PRODUCT with Network Capability">>/dev/null
 34            "$MSM_HOME_LINK/jre/bin/java" -classpath "rt.jar:$MSM_HOME_LINK/Framework" TestNetworkCapability
 35            if [ -f /tmp/network_present ]
 36            then
 37                network_flag=1
 38                i=21
 39                \\rm -f /tmp/network_present
 40            else
 41                sleep 5
 42            fi
 43        else
 44            echo "$MSM_PRODUCT without Network Capability">>/dev/null
 45            network_flag=1
 46            i=21
 47        fi
 48    done
 49    if [ $network_flag -eq 1 ]
 50    then
 51        echo "Trying to start Framework.....">>/dev/null
 52    else
 53        echo "$MSM_PRODUCT failed to start Framework..... Check your Network">>/dev/null
 54        echo "Trying to start Framework without Network Capability.....">>/dev/null
 55    fi
 56    sh "$MSM_HOME_LINK/Framework/startup.sh" >> /dev/null 2>>/dev/null &
 57}
 58
 59#function to stop Framework Service
 60stop() {
 61    . /etc/init.d/msm_profile
 62    sh "$MSM_HOME_LINK/Framework/shutdown.sh" >> /dev/null &
 63    sh "$MSM_HOME_LINK/Framework/shutdown.sh" >> /dev/null &
 64}
 65
 66case "$1" in
 67    start)
 68        check_status
 69        status=$?
 70        if [ $status = 0 ]; then
 71            echo "Framework is already running....."
 72        else
 73            echo "Starting Framework: "
 74            start
 75        fi
 76        ;;
 77    stop)
 78        check_status
 79        status=$?
 80        if [ $status = 3 ]; then
 81            echo "Framework is already stopped....."
 82        else
 83            echo "Shutting down Framework: "
 84            stop
 85        fi
 86        ;;
 87    restart|reload)
 88        $0 stop
 89        sleep 20
 90        $0 start
 91        ;;
 92    status)
 93        check_status
 94        RETVAL=$?
 95        if [ $RETVAL = 0 ]; then
 96            echo "Framework is running..."
 97        else
 98            if [ $RETVAL = 3 ]; then
 99                echo "Framework is stopped..."
100            else
101                echo "Framework status unknown..."
102            fi
103        fi
104        ;;
105    *)
106        echo "Usage: $0 {start|stop|restart|status}"
107        exit 1
108esac
109exit $RETVAL

4、startup.sh

 1#!/bin/sh
 2
 3. /etc/rc.d/init.d/msm_profile
 4
 5cd "$MSM_HOME_LINK/Framework"
 6
 7LD_PRELOAD=$JRE_HOME/lib/amd64/libjsig.so
 8export LD_PRELOAD
 9
10LD_LIBRARY_PATH=`pwd`:/opt/lsi/Pegasus:/opt/msm/lib:/opt/snmp/lib
11export LD_LIBRARY_PATH
12
13JAVAX_PATH=$JRE_HOME/bin/javax.activation.jar
14
15"$JRE_HOME/bin/java" -classpath $JAVAX_PATH:rt.jar:jsse.jar:jce.jar:javax.mail.jar:Framework.jar -Djava.library.path=. Framework.FrameworkManager

5、shutdown.sh

1#!/bin/sh
2
3. /etc/rc.d/init.d/msm_profile
4
5cd "$MSM_HOME_LINK/Framework"
6
7"$JRE_HOME/bin/java" -classpath rt.jar:jsse.jar:jce.jar:Framework.jar:framework_shutdown.jar:. -Djava.library.path=. shutdown.FrameworkShutdown

6、startupui.sh

1#!/bin/sh
2
3if [ "$DISPLAY" = "" ]; then
4 echo "X11 Display variable is not properly set"
5fi
6. /etc/init.d/msm_profile
7cd "$MSM_HOME_LINK"
8#XMODIFIERS=@im=none
9"$JRE_HOME/bin/java" -DVENUS=true -classpath .:GUI.jar:monitorgui.jar:DebugLog.jar:log4j-1.2.15.jar:jaxen-1.1.jar:jdom-1.1.jar GUI.VivaldiStartupDialog ajsgyqkj=71244
本栏目相关
  •  2024-03-02 网络运维及安全基础:MAC地址安全管理之二
  •  2010-01-25 Linux 下的分区调整工具GParted实战
  •  2020-02-27 服务器热加硬盘、热转RAID模式,配合LINUX卷操作实现不重启服务器完成扩容
  •  2023-01-26 Windows服务器折腾安装MegaRAID存储管理器17.05版
  •  2022-02-24 如何安装使用 Broadcom RAID卡命令行管理工具 StorCLI(或称PercCLI)?
  •  2023-02-26 能否用Windows服务器作为路由器?(基本配置篇)
  •  2022-12-03 VMware vSphere Hypervisor 6.7 手动升级过程实例
  •  2022-10-17 安装 MegaRAID 存储管理器集中监控 DAS 存储状态
  •  2022-05-20 内网DNS服务实现公网域名在内网转换解析
  • 微信订阅号二维码

    本页网址二维码:

    本栏目热门内容
  • Acrobat虚拟PDF打印机执行打印时挂起,解决办法竟然...
  • LINKSYS交换机登录WEB界面显示不正确的解决方法
  • 又一次RAID 5阵列故障记录
  • 解决VMware vSphere ESXi 5.0 Update 1 中虚机不能...
  • 修改CentOS发行信息以绕过Dell服务器BIOS更新和DSET...
  • 解决虚拟化运行的 Windows Server 2003 标准版出现...
  • Windows Server 2008 重命名域和域控制器
  • Intel Nehalem CPU Errata 导致 VMWare ESXi(vSpher...
  • 一次很精神的电脑组装过程记录(但不是自己的电脑)...
  • 解决MySQL Cluster 备份总是失败,提示文件已存在的...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的问题
  • 解决 VMWare vSphere 6 客户端无法修改用户密码
  • 解决Windows Server 2008 R2域控制器显示无法连接到...
  • 本站服务器RAID 5阵列双硬盘失效挽救记录
  • 网站数据库从MySQL 5.0升级到5.6的记录
  • 解决MariaDB使用Percona XtraBackup增量备份出错
  • Linux 下的分区调整工具GParted实战
  • DELL PowerEdge 820 报CPU3 INTERNAL ERROR 的解决...
  • 修改arpwatch使通知邮件主题显示IP地址
  • 程序员漫画:如何用8种不同的编程语言去解救公主
  • 解决很好用的多合一即时通信软件pidgin的崩溃问题
  • 解决Samba WINS服务的错误解释问题
  • 使用 GParted 进行虚拟机硬盘分区调整操作
  • 解决Squid代理HTTP时在浏览器出现Content Encoding ...
  • 用Delphi编写使用到ADO的DLL的一些问题
  • 网站简单改版
  • 索尼系列手提电脑备份失败,出现700错误的解决办法
  • Dell R900服务器 BMC firmware incompatible with C...
  • 更多...