专利名称:服务器远程智能通讯管理维护方法
技术领域:
本发明涉及一种计算机应用技术,具体地说是一种服务器远程智能通讯管理维护方法。
背景技术:
计算机服务器是计算机网络的神经中枢,服务器一旦出现故障,就会造成网络服务中断或网络瘫痪,重要信息数据的丢失。通常计算机服务器及其外围设备正常工作时,管理人员一般要24小时值班,随时处理服务器出现的各种问题,保证其正常工作。但是现在信息系统应用面越来越宽,作用越来越大,系统也越来越复杂,管理难度越来越高。在这种情况下,原始的人工管理,已经无法实时监控如此庞大而复杂的网络,无法实时了解网络运行状况和通断情况,无法实时发现服务器的故障,快速反应。面对如此众多的服务器如何进行快速有效的远程管理维护便成为企业经营管理上非常重要的课题。
发明内容
本发明的目的是提供一种服务器远程智能通讯管理维护方法,以确保服务器正常运行,使管理维护效率更高,减少系统维护费用。
本发明的目的是按以下方式实现的,通过服务器的主板管理控制器(BMC)监测服务器系统运行状态,当网络服务器系统发生故障时,自动运行固化在非易失存储单元(EEPROM)中的特定指令,此程序的运行与主机运行状态无关,只要服务器电源保留有待机电压+5Vstandby即可运行。通过定制特定指令,使服务器通过调制解调器自动连接到电话网络系统,发送寻呼报警信息,即可实现服务器的远程智能通讯管理维护服务。
一、服务器发生故障,自动拨打管理员寻呼机(或者手机)。
二、外地管理接到特点的传呼代码,发现服务器故障。
三、外地管理员通过网络登录到服务器,进行服务器的远程诊断与维护。
附图1为服务器远程智能通讯管理维护方法的通讯示意图。
附图2为服务器远程智能通讯管理维护方法的通讯管理流程图。
5、实施方式 参照说明书附图对本发明的服务器远程智能通讯管理维护方法作以下详细说明 服务器本地的管理子系统自动实时监视探测系统的运行状态,当出现故障时自动运行主板管理控制器存储单元(EEPROM)中的固化拨号指令,使得服务器通过调制解调器自动连接到市话通讯网络中,并且将服务器的运行状态信息以数字代码或语音短信的方式,通过市话和无线通讯网络,发送给服务器管理员。服务器管理员可通过服务器智能无线通讯实施多点远程监控或通过互联网登陆服务器实施远程诊断与维护。
主板固化拨号指令为 void CMyComCtrlMyDial(CString servername){ //获取预先设置的报警配置信息,如寻呼号码等 int m=0,n=0; char str[255]=″0″; CString ExeAdress2; CString msg; GetModuleDir(&ExeAdress2); CString path=ExeAdress2+″\\try.ini″; GetPrivateProfileString(servername,″number1″,″″,str,255,path); CString dialnumber1=str; GetPrivateProfi leString(servername,″number2″,″″,str,255,path); CString dialnumber2=str; GetPrivateProfileString(servername,″number3″,″″,str,255,path); CString dialnumber3=str; GetPrivateProfileString(servername,″callnumber″,″″,str,255,path); CString callnumber=str; GetPrivateProfileString(servername,″callinterval″,″″,str,255,path); CString callinterval=str; m=atoi(cal1number); n=atoi(callinterval); if((dialnumber1==″″)&&(dialnumber2==″″)&&(dialnumber3==″″)) { msg=″Page Number Error″; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return;}else {<!-- SIPO <DP n="2"> --><dp n="d2"/>if(call number==″″){ if(callinterval==″″) { msg=″Configuration error!″; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } else { msg=″Paging count error!″; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } else if(callinterval==″″) { msg=″寻呼配置错误!请正确配置呼叫间隔。 showMsg.ShowWindow(Sw_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } else { if(m>10) { if(n>300) { msg=″Inter-Time error!″; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } else { msg=″Paging configuration error″;<!-- SIPO <DP n="3"> --><dp n="d3"/>showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } else if(n>300) { msg=″Paging time configuration error″; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } } if((callnumber!=″″)&&(callinterval!=″″))//if1 { if((m<=10)&&(n<=300))//if2 { RASDIALPARAMS rdParams; rdParams.dwSize=sizeof(RASDIALPARAMS); rdParams.szEntryName
=’\0’; rdParams.szCallbackNumber
=’\0’; rdParams.szUserName
=’\0’; rdParams.szPassword
=’\0’; rdParams.szDomai n
=’\0’; CMainFrame*pMainFrm=(CMainFrame*)AfxGetMainWnd(); for(int x=1;x<=m;x++)//for1 { DWORD dwRet1=-1,dwRet2=-1,dwRet3=-1; lstrcpy(rdParams.szPhoneNumber,dialnumber1); if(rdParams.szPhoneNumber
!=’\0’) { dwRet1=RasDial(NULL,NULL,&rdParams,OL,NULL, &pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零 if((dwRet1!=777)&&(dwRet1!=-1)&&(dwRet1!=651)) { char szBuf1[256]; if(dwRet1==756)<!-- SIPO <DP n="4"> --><dp n="d4"/> wsprintf((LPSTR)szBuf1,″拨号连接错误!调制解调器没有正确配<br/>置,请检查拨号设置(%1d)。″,dwRet1);// else { if(RasGetErrorString((UINT)dwRet1,<br/>(LPSTR)szBufl,256)!=0) wsprintf((LPSTR)szBufl,″拨号错误,请检查调制解<br/>调器和拨号设置(%ld)。″,dwRet1); } msg=(LPSTR)szBufl; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } if((dwRet1==777)||(dwRet1==0)||(rdParams.szPhoneNumber
==’\0’)||(dwRet1==651)) { lstrcpy(rdParams.szPhoneNumber,dialnumber2); pMainFrm->hRasConn=NULL; if(rdParams.szPhoneNumber
!=’\0’) { dwRet2=RasDial(NULL,NULL,&rdParams,OL,NULL,&pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零 if((dwRet2 !=777)&&(dwRet2!=-1)&&(dwRet2!=651)) { char szBuf2[256]; if(RasGetErrorString((UINT)dwRet2,(LPSTR)szBuf2,256)!=0) wsprintf((LPSTR)szBuf2,″拨号错误,请检查您的调制解调器和拨号设置是否正确(%ld).″,dwRet2); msg=(LPSTR)szBuf2; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } lstrcpy(rdParams.szPhoneNumber,dialnumber3);<!-- SIPO <DP n="5"> --><dp n="d5"/>pMainFrm->hRasConn=NULL;if(rdParams.szPhoneNumber
!=’\0’) {dwRet3=RasDial(NULL,NULL,&rdParams,OL,NULL,&pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零 if((dwRet3!=777)&&(dwRet3!=-1)&&(dwRet3!=651)) { char szBuf3[256]; if(RasGetErrorString((UINT)dwRet3,(LPSTR)szBuf3,256) !=0) wsprintf((LPSTR)szBuf3,″拨号错误,请检查您的调制解调器和拨号设置是否正确设置(%ld).″,dwRet3); msg=(LPSTR)szBuf3; showMsg.ShowWindow(SW_SHOWDEFAULT); showMsg.m_msg.SetWindowText(msg); return; } } } if(x<m) Sleep(n*60000); }//end_for1 }//end_if2}//end_if1} 本发明的服务器智能无线寻呼报警方法和现有技术相比,具有构思合理、使用方便、节省人力、智能化程度高等特点,因而,具有很好的推广使用价值。
权利要求
1.服务器远程智能通讯管理维护方法,其特征在于服务器管理子系统监视探测服务器系统运行状态,自动运行主板管理控制器存储单元(EEPROM)中的固化拨号指令,服务器自动连接到市话通讯网络中,并且将运行状态信息以数字代码或语音短信的方式,通过市话和无线通讯网络,发送给服务器管理员,实现服务器的远程智能无线寻呼报警和管理维护。
2.根据权利要求1所述的方法,其特征在于服务器管理员通过服务器智能无线通讯实施多点远程监控。
3.根据权利要求1所述的方法,其特征在于服务器管理员通过互联网登陆服务器实施远程诊断与维护。
4.根据权利要求1所述的方法,其特征在于主板管理控制器(BMC)上固化的自动拨号连接指令为
void CMyComCtrl::MyDial(CString servername){//获取预先设置的报警配置信息,如寻呼号码等int m=0,n=0;char str[255]=″0″;CString ExeAdress2;CString msg;GetModuleDir(& ExeAdress2);CString path=ExeAdress2+″\\try.ini″;GetPrivateProfileString(servername,″number1″,″″,str,255,path);CString dialnumber1=str;GetPrivateProfileString(servername,″number2″,″″,str,255,path);CString dialnumber2=str;GetPrivateProfileString(servername,″number3″,″″,str,255,path);CString dialnumber3=str;GetPrivateProfileString(servername,″callnumber″,″″,str,255,path);CString callnumber=str;GetPrivateProfileString(servername,″callinterval″,″″,str,255,path);CString callinterval=str;m=atoi(callnumber);n=atoi(callinterval);if((dialnumber1==″″) &&(dial number2==″″)&&(dialnumber3==″″)){<!-- SIPO <DP n="1"> --><dp n="c1"/>msg=″Page Number Error″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}else{if(callnumber==″″){if(callinterval==″″){msg=″Configuration error!″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}else{msg=″Paging count error!″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}elseif(callinterval==″″){msg=″寻呼配置错误!请正确配置呼叫间隔。″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}else{if(m>10){if(n>300){msg=″Inter-Time error!″;<!-- SIPO <DP n="2"> --><dp n="c2"/>showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}else{msg=″Paging configuration error″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}elseif(n>300){msg=″Paging time configuration error″;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}}if((callnumber!=″″)&&(callinterval!=″″))//if1{if((m<=10)&&(n<=300))//if2{RASDIALPARAMS rdParams;rdParams.dwSize=sizeof(RASDIALPARAMS);rdParams.szEntryName
=’\0’;rdParams.szCallbackNumber
=’\0’;rdParams.szUserName
=’\0’;rdParams.szPassword
=’\0’;rdParams.szDomain
=’\0’;CMainFrame * pMainFrm=(CMainFrame*)AfxGetMainWnd();for(int x=1;x<=m;x++)//for1{DWORD dwRet1=-1,dwRet2=-1,dwRet3=-1;lstrcpy(rdParams.szPhoneNumber,dialnumber1);if(rdParams.szPhoneNumber
!=’\0’)<!-- SIPO <DP n="3"> --><dp n="c3"/>{dwRet1=RasDial(NULL,NULL,&rdParams,OL,NULL,&pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零if((dwRet1!=777)&&(dwRet1!=-1)&&(dwRet1!=651)){char szBuf1[256];if(dwRet1==756)wsprintf((LPSTR)szBuf1,″拨号连接错误!调制解调器没有正确配置,请检查拨号设置(%ld)。″,dwRet1);//else{if(RasGetErrorString((UINT)dwRet1,(LPSTR)szBuf1,256)!=0)wsprintf((LPSTR)szBuf1,″拨号错误,请检查调制解调器和拨号设置(%ld)。″,dwRet1);}msg=(LPSTR)szBuf1;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}if((dwRet1==777)||(dwRet1==0)||(rdParams.szPhoneNumber
==’\0’)||(dwRet1==651)){lstrcpy(rdParams.szPhoneNumber,dialnumber2);pMainFrm->hRasConn=NULL;if(rdParams.szPhoneNumber
!=’\0’){dwRet2=RasDial(NULL,NULL,&rdParams,OL,NULL,&pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零if((dwRet2!=777)&&(dwRet2!=-1)&&(dwRet2!=651)){char szBuf2[256];if(RasGetErrorString((UINT)dwRet2,(LPSTR)szBuf2,256)!=0)wsprintf((LPSTR)szBuf2,″拨号错误,请检查您的调制解调器和拨号设置是否正确(%ld).″,dwRet2);<!-- SIPO <DP n="4"> --><dp n="c4"/>msg=(LPSTR)szBuf2;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}lstrcpy(rdParams.szPhoneNumber,dialnumber3);pMainFrm->hRasConn=NULL;if(rdParams.szPhoneNumber
!=’\0’){dwRet3=RasDial(NULL,NULL,&rdParams,OL,NULL,&pMainFrm->hRasConn);//如果拨号成功,dwRet返回值为零if((dwRet3!=777)&&(dwRet3!=-1)&&(dwRet3!=651)){char szBuf3[256];if ( RasGetErrorString((UINT)dwRet3,(LPSTR)szBuf3,256) !=0)wsprintf((LPSTR)szBuf3,″拨号错误,请检查您的调制解调器和拨号设置是否正确设置(%ld).″,dwRet3);msg=(LPSTR)szBuf3;showMsg.ShowWindow(SW_SHOWDEFAULT);showMsg.m_msg.SetWindowText(msg);return;}}}if(x<m)Sleep(n*60000);}//end_for1}//end_if2}//end_if1}
全文摘要
本发明提供一种服务器远程智能报警和管理维护方法。服务器本地的管理子系统自动实时监视探测系统的运行状态,当出现故障时自动运行主板管理控制器存储单元(EEPROM)中的固化拨号指令,使得服务器通过调制解调器自动连接到市话通讯网络中,并且将服务器的运行状态信息以数字代码或语音短信的方式,通过市话和无线通讯网络,发送给服务器管理员,以实现服务器的远程智能无线寻呼报警和管理维护。本发明的服务器智能无线寻呼报警方法和现有技术相比,具有构思合理、使用方便、节省人力、智能化程度高等特点,因而,具有很好的推广使用价值。
文档编号H04L12/24GK1595888SQ20031011460
公开日2005年3月16日 申请日期2003年12月16日 优先权日2003年12月16日
发明者黄家明, 刘正伟, 孟凡普 申请人:浪潮电子信息产业股份有限公司