telnet学习

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>
        /// 去网元
        /// </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;
        }

猜你喜欢

转载自blog.csdn.net/u010773333/article/details/80182196
今日推荐