Network > Backup"; $DEBUG = 0; $pubDb = "OMC_PUB"; set_time_limit(3600); function MsgBox($str) { echo ""; }//end MsgBox function createParamCVS($path,$tbNameArr) { $pubDb = "OMC_PUB"; for($i=0; $i(isFinish != 0) || (waitTime >= maxWaitTime) || (stopTime > maxStopTime)"; while(1) { echo ""; flush(); //echo "
($isFinish != 0) || ($waitTime >= $maxWaitTime) || ($stopTime > $maxStopTime)"; if(($isFinish != 0) || ($waitTime >= $maxWaitTime) || ($stopTime > $maxStopTime)){ if($commId >= $maxOfCommId){ //初始化命令表 //先删除表 $dropSql = "DROP TABLE $commTable "; mysqli_query($pubConn,$dropSql); //再建一个结构相同的新表 $createSql="CREATE TABLE subscriberComm ( commId smallint(5) unsigned NOT NULL auto_increment, commType tinyint(1) DEFAULT '0' NOT NULL, dataTypeNo tinyint(4) DEFAULT '0' NOT NULL, sysTypeNo smallint(5) unsigned DEFAULT '0' NOT NULL, sysNo smallint(5) unsigned DEFAULT '0' NOT NULL, subSysNo smallint(5) unsigned DEFAULT '0' NOT NULL, indexValueList varchar(255) NOT NULL, fieldNameList tinytext NOT NULL, paramType tinyint(4) DEFAULT '0' NOT NULL, commState tinyint(3) unsigned DEFAULT '0' NOT NULL, totalNum smallint(5) unsigned DEFAULT '0' NOT NULL, finishNum smallint(5) unsigned DEFAULT '0' NOT NULL, sendTime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, bgnTime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, endTime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, remark varchar(200) binary NOT NULL, PRIMARY KEY (commId), KEY sysTypeNo (sysTypeNo), KEY sysNo (sysNo), KEY subSysNo (subSysNo), KEY bufferKey (indexValueList) ) "; mysqli_query($pubConn,$createSql); }else{ //删除命令表的相关命令 $commArr = explode('-',$commIdStr); for($i=0;$ideleteSql = $deleteSql"; mysqli_query($pubConn,$deleteSql); echo mysqli_error($pubConn); } } // 重定向返回指定页 if($isFinish != 0){ if($isFinish > 0){ echo "Finished."; flush(); if($commType == $nLoadIndexComm){ sleep(8);//等8秒,这样数据库插入才能完全完成 } return 1; }elseif($isFinish == -1){ echo "Failed in some system!!"; flush(); return 0; }else{ echo "Failed!!"; flush(); return 0; } }elseif($usedTime >= $maxOverTime && $stopTime == 1){ echo "Stoped!!"; flush(); return 0; }else{ //$usedTime >= $maxOverTime echo "Timeout!!"; flush(); return 0; } }//end of if($isFinish....) //显示命令执行状态 //----------------------------- $okNum = 0; $failNum = 0; $commNum = 0; $commArr = explode('-',$commIdStr); $thisTimeFinishNumStr = ''; $lastTimeFinishNumArr = explode('-',$lastTimeFinishNumStr); for($i=0;$iget command = $commSql"; $commResult = mysqli_query($pubConn,$commSql); if(mysqli_num_rows($commResult) <= 0){ echo "
Can not find this command's info in datebase"; exit(); } $commRows = @mysqli_fetch_array($commResult); $sysTypeNo = $commRows[sysTypeNo]; $sysNo = $commRows[sysNo]; $subSysNo = $commRows[subSysNo]; $commType = $commRows[commType]; $paramType = $commRows[paramType]; $objId = $commRows[objId]; $commState = $commRows[commState]; $indexValueList = $commRows[indexValueList]; $fieldNameList = $commRows[fieldNameList]; $remark = $commRows[remark]; switch($commState){ case 0: //process failed $failNum++; echo " $commRows[remark] "; flush(); return 0; //break; case 1: //wait process $waitTime++; break; case 2: //in process $waitTime = 0; //只要有一个命令的完成数在增长,就认为该组命令在运行,否则认为命令处理超时 if($DEBUG) echo "====> {$commRows[finishNum]} > {$lastTimeFinishNumArr[$i]}"; if($commRows[finishNum] > $lastTimeFinishNumArr[$i]){ $stopTime = 0; }else{ $stopTime++; } $thisTimeFinishNumStr .=$commRows[finishNum].'-'; break; case 3: //process finished $okNum++; break; default: echo "Unknown Command State"; flush(); exit(); } }//end of for($i=0;$i$commNum =?= $finishNum"; if($commNum == $okNum){ $isFinish = 1; }elseif($failNum > 0 && $okNum > 0){ $isFinish = -1; }elseif($commNum == $failNum){ $isFinish = -2; }else{ $isFinish = 0; } if($DEBUG) echo"
lastTimeFinishNumStr=$lastTimeFinishNumStr"; if($DEBUG) echo"
thisTimeFinishNumStr=$thisTimeFinishNumStr"; $lastTimeFinishNumStr = $thisTimeFinishNumStr; //刷新返回 //-------------- $usedTime++; //总时间 sleep(5); }//end while } function createSubsCVS($path,$subsTlbName,$sysId) { $pubDb = "OMC_PUB"; $filePath = $path . "$subsTlbName.$sysId.csv"; if (is_file($filePath)) unlink($filePath); $csvFileUpdateSql=" SELECT * INTO OUTFILE '{$filePath}' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM $subsTlbName limit 0,5000 "; //echo "
csvFileUpdateSql= $csvFileUpdateSql"; $csvFileUpdateResult = mysqli_query($pubConn ,$csvFileUpdateSql); echo mysqli_error($pubConn); }//end createSubsCVS function getBssIp (&$bssIpArr) { $bssDb = "BssOmcDb"; $bssTable = "OMCR_BSSTABLE"; $selSql = "select ip,bssid from $bssTable"; $bssResult = mysqli_query($pubConn,$selSql); while($bssRow = mysqli_fetch_array($bssResult)) { $ip = $bssRow[ip]; if(strlen($ip)< 7) continue; $bssIpArr[] = $ip; } }//end getBssIp function getBssDb($bssDbPath,$bssIpAddr) { $fileArr = array('abis.db', 'bscadmin.db', 'calltrc.db', 'sysmon.db', 'aifadmin.db', 'BssGb.db', 'frmgr.db', 'trkadmin.db'); $remoteDir = "/hd0/iw07_00.010/compile/cfg/"; $ftpCon=@ftp_connect($bssIpAddr); if($ftpCon < 0){ echo "BSS's ip is error or connect $bssIpAddr Failed!"; flush(); return 0; } if(!@ftp_login($ftpCon,'','')){ echo "BSS's ip is error or login $bssIpAddr Failed!"; @ftp_close($ftpCon); flush(); return 0; } if(!@ftp_chdir($ftpCon, $remoteDir)){ echo "Change dir error!"; @ftp_close($ftpCon); flush(); return 0; } $localDir = $bssDbPath . $bssIpAddr . '/'; mkdir($localDir, 0755); for($i=0; $i< sizeof($fileArr); $i++) { $file = $fileArr[$i]; $remoteFile=$remoteDir.$file; $localFile=$localDir.$file; if (!@ftp_get($ftpCon, $localFile, $remoteFile, FTP_BINARY)) { flush(); echo "Get file error!"; @ftp_close($ftpCon); return 0; } }//end for @ftp_close($ftpCon); return 1; }//end get BssDb ?> "; echo ""; echo ""; echo "$ThisPage"; echo ""; echo ""; showHelp($helpId); echo ""; echo ""; echo ""; ?> 111, 'name' => 'PLAT'), array('typeNo' => 222, 'name' => 'PLAT'), array('typeNo' => 223, 'name' => 'PLAT'), array('typeNo' => 225, 'name' => 'PLAT') ); $tmpAllSysArr = $needBackupArr; for($i=0; $iselSql:$selSql"; $result = mysqli_query($pubConn,$selSql); $rowNum = mysqli_num_rows($result); if($rowNum<=0) continue; if($curSys < 300 && $curSys != 225) { $lastSysNo=-1; while($rows = mysqli_fetch_array($result)) { $sysNo=$rows[sysNo]; $subSysNo = $rows[subSysNo]; if($curSys > 200 && $sysNo==0) continue; $sysId = $curSys."_".$sysNo."_99"; $slcsysId=-1; $tlbNo = $sysNo; if($curSys==222 || $curSys==223) { if(($sysNo==8) || ($sysNo==11)) { if((!$vssExist && $sysNo==8) || (!$aasExist && $sysNo==11)) continue; $sysId = $curSys . '_' . $sysNo . '_' . $subSysNo; } else if($sysNo==9) { $sysId = $curSys . '_99_99'; $slcsysId = $curSys . '_' . $sysNo . '_' . $subSysNo; $tlbNo = 99; } } if($curSys==111) { $slcsysId = $curSys."_".$sysNo."_".$subSysNo; } $oidsysArr[]= array('oid'=>'2', 'sysid'=> $sysId, 'selectsysid'=> $slcsysId); if($sysNo != $lastSysNo) $tbNameArr[] = "OBJ_".$curSys.".param_".$tlbNo; $lastSysNo=$sysNo; } } if($curSys > 300 || $curSys==225) { $slcsysId = -1; $sysId = $curSys."_99_99"; $oidsysArr[]= array('oid'=>'2', 'sysid'=> $sysId, 'selectsysid'=> $slcsysId); $tbNameArr[] = "OBJ_".$curSys.".param_99"; } $allSysArr[$j] = $tmpAllSysArr[$i]; $allSysArr[$j][oidsysArr]=$oidsysArr; $allSysArr[$j][tbNameArr]=$tbNameArr; $j++; unset($oidsysArr); unset($tbNameArr); } }//end get allSysArr. //print_r($allSysArr); //exit; {//get subsDbArr. $tmpdbArr = array( array('typeNo' => '330'), //HLR //array('typeNo' => '325'), //VLR array('typeNo' => '360'), //PPS //array('typeNo' => '340'), //AUC array('typeNo' => '380'), //EIR array('typeNo' => '370'), //MNP array('typeNo' => '390')//must be the last one. ); for($i=0; $i< sizeof($tmpdbArr); $i++) { $tmpTypeNo = $tmpdbArr[$i][typeNo]; for($j=0; $j< sizeof($needBackupArr); $j++){ if($tmpTypeNo==$needBackupArr[$j][typeNo]){ $tmpsubsDbArr[] = $tmpdbArr[$i]; break; } } } for($i=0; $i 0){ if($sysTypeNo==390){ $j=$i; while($infoRows = mysqli_fetch_array($infoResult)) { $sysNo = $infoRows[sysNo]; $subSysNo = $infoRows[subSysNo]; $sysId = $sysTypeNo.'_'.$sysNo.'_'.$subSysNo; $subsTlb = "VMS_DB.subscriberData_" . $sysNo; $subsDbArr[$j][typeNo] = $sysTypeNo; $subsDbArr[$j][sysId] = $sysId; $subsDbArr[$j][name] = 'VMS'; $subsDbArr[$j][subsTlb] = $subsTlb; $j++; } } else { $sysSubsConfTable ='OMC_PUB.sysSubsConf'; $systemConfTable = 'OMC_PUB.sysConf'; $getConfSql="SELECT sysTypeName,dataTypeNo,indexFieldName,subsDataTable,tmpDataTable FROM $sysSubsConfTable,$systemConfTable WHERE $sysSubsConfTable.sysTypeNo='$sysTypeNo' AND $systemConfTable.sysTypeNo='$sysTypeNo' AND $sysSubsConfTable.dataTypeNo='$dataTypeNo' "; $getConfResult=mysqli_query($pubConn,$getConfSql); echo mysqli_error($pubConn); $getConfRows=mysqli_fetch_array($getConfResult); $sysTypeName =$getConfRows[sysTypeName]; //$indexFieldName =$getConfRows[indexFieldName]; $subsTlb =$getConfRows[subsDataTable]; //$tmpDataTable =$getConfRows[tmpDataTable]; $infoRows = mysqli_fetch_array($infoResult); $sysNo = $infoRows[sysNo]; $subSysNo = $infoRows[subSysNo]; $sysId = $sysTypeNo.'_'.$sysNo.'_'.$subSysNo; $subsDbArr[$i][typeNo] = $sysTypeNo; $subsDbArr[$i][sysId] = $sysId; $subsDbArr[$i][name] = $sysTypeName; $subsDbArr[$i][subsTlb] = $subsTlb; } } } }//end get subsDbArr. if($needGetParam)//get parameters from devices { echo "
Getting parameter data from devices ...
"; flush(); for($i=0; $i    $sysName ]  "; flush(); } GetParam($oidsysArr,0,0); $oldName = $sysName; } }//end get parameters from devices if($needGetParam)//create parameters' cvs files { echo "
    Creating tables
  "; exec("mkdir $paremerPath -p"); exec("chmod -R 755 $paremerPath"); for($i=0; $i"; flush(); } $tbNameArr = $allSysArr[$i][tbNameArr]; createParamCVS($paremerPath,$tbNameArr); $oldName = $sysName; } //========download the OBJ_222.param_8 OBJ_223.param_8 table $vss_tbNameArr_222=array(0=>'OBJ_222.param_8'); $vss_tbNameArr_223=array(0=>'OBJ_223.param_8'); createParamCVS($paremerPath,$vss_tbNameArr_222); createParamCVS($paremerPath,$vss_tbNameArr_223); }//end create parameters' cvs files if($needGetSubs) //get Subscriber data from devices { echo "
"; echo "
Getting subscribers data from devices ...
"; flush(); for($i=0; $i    $sysName ]  "; flush(); } $rtn = getSubsData($sysId,$dataTypeNo); $subsDbArr[$i][getSubsOk] = $rtn; $oldName = $sysName; } }//end get subscriber data from devices. //exit; if($needGetSubs)//create subscribers' cvs files { exec("mkdir $subsPath -p"); exec("chmod -R 755 $subsPath"); echo "
    Creating tables
  "; for($i=0; $i< sizeof($subsDbArr); $i++) { if($subsDbArr[$i][getSubsOk]!=1) continue; $subsTlbName = $subsDbArr[$i][subsTlb]; $sysId = $subsDbArr[$i][sysId]; $sysName = $subsDbArr[$i][name]; if($sysName !== $oldName) { echo ""; flush(); } createSubsCVS($subsPath,$subsTlbName,$sysId); $oldName = $sysName; }//end subscribers table. }//end create subscribers cvs files. if($needBss)//get bss data { echo "
"; echo "
Getting BSS data ...
"; flush(); exec("mkdir $bssOmcTlbPath -p"); exec("chmod -R 755 $bssOmcTlbPath"); $tbNameArr = array('BssOmcDb.OMCR_BSSTABLE'); echo "
    Creating parameter tables ... "; createParamCVS($bssOmcTlbPath,$tbNameArr); echo "Finished."; //get bss db. exec("mkdir $bssDbPath -p"); exec("chmod -R 755 $bssDbPath"); chdir($bssDbPath); getBssIp ($bssIpArr); for($i=0; $i    Getting $bssIpArr[$i] dbs ... "; flush(); if(getBssDb($bssDbPath,$bssIpArr[$i])){ echo "Finished."; flush(); } } }//end get bss database. $needCompress = $needGetParam||$needGetSubs||$needBss; if($needCompress)//compress files { $time = date("Ymd_Hi"); $tgzName = "backup_".$time.'_'; if($needGetParam) $tgzName .= 'param_'; if($needGetSubs) $tgzName .= 'subs_'; if($needBss) $tgzName .= 'bss_'; $tgzName = rtrim($tgzName,'_'); $tgzName .= '.tgz'; echo "
"; echo "
Compressing files ...
"; flush(); if (is_dir($tgzPath)) exec("rm -rf $tgzPath"); exec("mkdir $tgzPath -p"); exec("chmod -R 755 $tgzPath"); chdir($tmpPath); exec("tar zcvf $tgzName *"); exec("mv $tgzName $tgzPath"); exec("rm -rf $tmpPath"); echo "Finished."; flush(); }//end compress files. sleep(3); //exit; echo ""; ?>