telnet命令
首先建立连接
TelnetMML telnetmml = new TelnetMML();
return telnetmml.RetNoByCellID(ip, bstID, retdata);
telnet命令一般分为几部 首先要
/// <summary>
/// 修改命令
/// </summary>
/// <param name="ip">网元</param>
/// <param name="bstID">基站ID</param>
/// <param name="retdata">方向角度</param>
/// <returns></returns>
public bool RetNoByCellID(string ip, int bstID, int retdata)
{
bool doupmml = false;//修改MML命令是否成功
bool success = false;
try
{
//登录
success = Login();
// LogApp.Log4Net.Info("mml修改登录:" + success);
//注册网元
success = Regip(ip);
// LogApp.Log4Net.Info("mml修改注册网元:" + success);
//缓存数据
success = SetCmdData(ip);
// LogApp.Log4Net.Info("mml修改缓存数据:" + success);
if (success)
{
//获取缓存数据
RetDsp();
//查询并拼接MML命令
int cellid = bstID; //小区编号
int asector = eucellsect[cellid]; //扇区编号
int framenumber = rrucellsect[asector]; //框号
LogApp.Log4Net.Info("MMl命令:小区编号:" + cellid + "扇区编号:" + asector + "框号:" + framenumber);
//执行修改命令
foreach (int key in retcellsect.Keys)
{
if (retcellsect[key] == framenumber)
{
int retseq = key;
doupmml = UpMML(ip, retseq, retdata);
}
}
}
//去网元
success = UnRegip(ip);
//LogApp.Log4Net.Info("mml修改去注册网元:" + success);
//退出登录
success = UnLogin();
//LogApp.Log4Net.Info("mml修改退出登录:" + success);
}
catch (Exception ex)
{
LogApp.Log4Net.Info("执行MML方法RetNoByCellID异常信息:" + ex.Message);
}
return doupmml;
}
登录
string lgiop = "LGI:OP=\"{0}\",PWD=\"{1}\";";
public bool Login()
{
string loginCmd = string.Format(lgiop, TelNetName, TelNetPassWord);
// LogApp.Log4Net.Info("MMl命令:lgiop:" + loginCmd);
bool success = telnetserver.Exec_Command(loginCmd);
return success;
}
执行登录命令
/**
* 执行命令
*/
public bool Exec_Command(string strcmd)
{
bool blresult=false;
string strprompt;
blresult = false;
strprompt = "";
if (telnet_tcp_client.Connected)
{
// Console.WriteLine("执行telnet命令:" + strcmd);
Send_Data_To_Host(strcmd + "\r\n");
strprompt = "";
strprompt = Recv_Data_From_Host();
if (strprompt.Contains("Success")|| strprompt.Contains("执行成功"))
{
blresult = true;
}
}
else
{
// Console.WriteLine("未连接上telnet");
}
return blresult;
}
/// <summary>
/// 注册网元
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public bool Regip(string ip)
{
bool success = false;
string regip = string.Format(regneip, ip);
// LogApp.Log4Net.Info("MMl命令:regip:" + regip);
bool regneSuccess = telnetserver.Exec_Command(regip);
// LogApp.Log4Net.Info("MMl命令:regip结果:" + regneSuccess);
if (regneSuccess) //注册网元成功
{
success = true;
}
return success;
}
//缓存数据
/// <summary>
/// 注册网元发送命令并缓存接受的值
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public bool SetCmdData(string ip)
{
bool success = false;
//清缓存
CacheHelper.RemoveAllCache();
string lsteuceResult = telnetserver.ExecCommandResult(lsteuce);
CacheHelper.SetCache("LSTEUCELLSECTOREQM", lsteuceResult);
string dspseResult = telnetserver.ExecCommandResult(dspsector);
CacheHelper.SetCache("DSPSECTOR", dspseResult);
string lsrRuselt = telnetserver.ExecCommandResult(lstret);
CacheHelper.SetCache("LSTRET", lsrRuselt);
if (lsrRuselt.Contains("Success") || lsrRuselt.Contains("执行成功"))
{
// LogApp.Log4Net.Info("MMl命令:lsrRuselt:" + lsrRuselt);
success = true;
}
return success;
}
/// <summary>
/// 把缓存的数据读到字典中
/// </summary>
public void RetDsp()
{
//var lsteucellsects = CacheHelper.GetCache("DSPSECTOR"); //LSTEUCELLSECTOREQM 命令的值
var lsteucellsects = CacheHelper.GetCache("LSTEUCELLSECTOREQM"); //LSTEUCELLSECTOREQM 命令的值
string linesstring = (string)lsteucellsects;
LogApp.Log4Net.Info("MMl命令:LSTEUCELLSECTOREQM" + linesstring);
string[] lines = linesstring.Split(new char[] { '\n' });
int a = 0;
int b = 0;
eucellsect.Clear();
foreach (string line in lines)
{
a++;
if (line.Contains("本地小区标识"))
{
b = a + 1;
continue;
}
if (b >= a)
{
if (line.Contains("(结果个数"))
{
b = a + 1;
break;
}
if (!string.IsNullOrEmpty(line.Trim()))
{
string[] arr = line.Split(new char[] { ',', '\t', '\n', ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 0)
{
int xiaoshi = Int32.Parse(arr[0]);
int shanqu = Int32.Parse(arr[1]);
eucellsect.Add(xiaoshi, shanqu);
}
}
}
b++;
}
//扇区和RRU的对应关系
// string[] lines2 = System.IO.File.ReadAllLines(@"D:\Study\2.txt");
// var lsteucell2 = CacheHelper.GetCache("LSTRET"); //DSPSECTOR 命令的值
var lsteucell2 = CacheHelper.GetCache("DSPSECTOR"); //DSPSECTOR 命令的值
string lsteucellsects2 = (string)lsteucell2;
LogApp.Log4Net.Info("MMl命令:DSPSECTOR" + lsteucellsects2);
string[] lines2 = lsteucellsects2.Split(new char[] { '\n' });
int a1 = 0;
int b1 = 0;
rrucellsect.Clear();
foreach (string line in lines2)
{
a1++;
if (line.Contains("扇区编号"))
{
b1 = a1 + 1;
continue;
}
if (b1 >= a1)
{
if (line.Contains("(结果个数"))
{
b1 = a1 + 1;
break;
}
if (!string.IsNullOrEmpty(line.Trim()))
{
string[] arr = line.Split(new char[] { ',', '\t', '\n', ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 0)
{
int xiaoshi = Int32.Parse(arr[0]);
int shanqu = Int32.Parse(arr[3]);
if (!rrucellsect.ContainsKey(xiaoshi))
{
rrucellsect.Add(xiaoshi, shanqu);
}
}
}
// Console.WriteLine(line);
}
b1++;
}
//var lsteucell3 = CacheHelper.GetCache("UNREGNE"); //LSTRET命令值
var lsteucell3 = CacheHelper.GetCache("LSTRET"); //LSTRET命令值
//var lsteucell2 = CacheHelper.GetCache("LSTRET"); //DSPSECTOR 命令的值
string lsteucellsects3 = (string)lsteucell3;
LogApp.Log4Net.Info("MMl命令:LSTRET" + lsteucellsects3);
string[] lines3 = lsteucellsects3.Split(new char[] { '\n' });
int a2 = 0;
int b2 = 0;
retcellsect.Clear();
foreach (string line in lines3)
{
a2++;
if (line.Contains("天线设备编号"))
{
b2 = a2 + 1;
continue;
}
if (b2 >= a2)
{
if (line.Contains("(结果个数"))
{
b2 = a2 + 1;
break;
}
if (!string.IsNullOrEmpty(line.Trim()))
{
string[] arr = line.Split(new char[] { ',', '\t', '\n', ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 0)
{
int xiaoshi = Int32.Parse(arr[0]);
int shanqu = Int32.Parse(arr[3]);
if (!retcellsect.ContainsKey(xiaoshi))
{
retcellsect.Add(xiaoshi, shanqu);
}
}
}
// Console.WriteLine(line);
}
b2++;
}
}
/// 去网元
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public bool UnRegip(string ip)
{
bool success = false;
string unregnecmd = string.Format(unregneip, ip);
string unregResult = telnetserver.ExecCommandResult(unregnecmd);
if (unregResult.Contains("Success") || unregResult.Contains("执行成功"))
{
success = true;
}
return success;
}
/// <summary>
/// 退出
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public bool UnLogin()
{
string UnloginCmd = string.Format(lgoop, TelNetName);
bool success = telnetserver.Exec_Command(UnloginCmd);
return success;
}