private static void RegisterOnu(OLT olt, Protocol protocol) { // создать новое телнет подключение в зависиости от заданой ОЛТ TelnetConnection tc = Connect(olt); // залогиниться и показать ответ сервера Console.Write(tc.Login(login, password, timeout)); Console.Write(tc.Read()); var output = ShowUncfgONU(tc); if (output != null) { ParseOutput(output, tc, olt, protocol); if (slotNumber != 0) { SetVlan(olt, protocol); ConfigureOnuProfile(tc); ConfigureOpticalPort(tc, protocol); ConfigureEthernetPort(tc); CheckConfiguration(tc); } } Console.ReadKey(true); }
private static TelnetConnection Connect(OLT olt) { TelnetConnection tc = null; if (olt == OLT.Kotliarskia) { tc = new TelnetConnection(kotlIP, port); } else if (olt == OLT.Zavodskia) { tc = new TelnetConnection(zavIP, port); } return(tc); }
static void Main(string[] args) { Console.WriteLine("Привiт. Вибiр протоколу. Для вибору PPPoE - 1, IPoE - 2."); protocol = (Protocol)Convert.ToInt32(Console.ReadLine()); if (!Enum.IsDefined(typeof(Protocol), protocol)) { Console.WriteLine("Помилка. Невірний номер ОЛТ."); } else { Console.WriteLine("Вибiр ОЛТ. Для вибору Котлярська - 1, Заводська - 2."); olt = (OLT)Convert.ToInt32(Console.ReadLine()); switch (olt) { case OLT.Kotliarskia: RegisterOnu(olt, protocol); break; case OLT.Zavodskia: RegisterOnu(olt, protocol); break; default: Console.WriteLine("Помилка. Невірний номер ОЛТ."); break; } } }
private static void SetVlan(OLT olt, Protocol protocol) { Console.WriteLine("Set Vlan!"); if (protocol == Protocol.PPPoE) { vlan = (shelfNumber - 1) * 16; int ponDif = 16 - ponNumber; if (olt == OLT.Kotliarskia) { vlan = vlan - ponDif + kotlVlan; } else if (olt == OLT.Zavodskia) { vlan = vlan - ponDif + zavVlan; } } else if (protocol == Protocol.IPoE) { vlan = ponNumber - 1; vlan *= 128; vlan += slotNumber; if (olt == OLT.Zavodskia) { svlan += shelfNumber - 1; } else if (olt == OLT.Kotliarskia) { svlan += shelfNumber - 1 + 100; } } Console.Write("Влан: "); Console.Write(vlan); Console.WriteLine(); }
private static void ParseOutput(string output, TelnetConnection tc, OLT olt, Protocol protocol) { if (output != null) { // ловим отупут сервера и парсим только инфомрацию о местонахождении ONU и ее серийный номер var parseOutput = output.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < parseOutput.Length; i++) { if (parseOutput[i].StartsWith("onu_")) { gponInfo = parseOutput[i]; // номер олт, платы, пона слота дял ону } // серийный номер ону if (parseOutput[i].StartsWith("ZTEGC") || parseOutput[i].StartsWith("MONU") || parseOutput[i].StartsWith("GPON")) { sn = parseOutput[i]; } } Console.WriteLine(gponInfo); // парсим информацию об ONU на номер олт, платы, пона в отдельности var parseGponInfo = gponInfo.Split(new char[] { '/', '_', ':' }, StringSplitOptions.RemoveEmptyEntries); // приводим String к int oltNumber = Int32.Parse(parseGponInfo[1]); // номера олт в числовом формате shelfNumber = Int32.Parse(parseGponInfo[2]); // номера платы в числовом формате ponNumber = Int32.Parse(parseGponInfo[3]); // номер пона в числовом формате tc.WriteLine("terminal length 0"); // снимаем ограничение на ввода для терминала var showGponOnuState = "show gpon onu state gpon-olt_" + oltNumber + "/" + shelfNumber + "/" + ponNumber; tc.WriteLine(showGponOnuState); // получаем информацию о кол-ве ону и о налчиии свободных слотов на поне output = tc.Read(); Console.Write(output); //Console.Write(tc.Read()); Console.WriteLine("Введiть номер слота на який треба зареєструвати ОНУ:"); slotNumber = Convert.ToInt32(Console.ReadLine()); if (protocol == Protocol.IPoE) { if (slotNumber > 128 || slotNumber < 1) { Console.WriteLine("Діапазон IPoE: 1 - 128 слоти, ви вибрали " + slotNumber + ". Спробуйте ще раз."); slotNumber = 0; } } if (slotNumber != 0) { Console.Write("Номер ОЛТ: "); Console.Write(oltNumber); Console.WriteLine(); Console.Write("Номер плати: "); Console.Write(shelfNumber); Console.WriteLine(); Console.Write("Номер пону: "); Console.Write(ponNumber); Console.WriteLine(); Console.Write("Номер онушки: "); Console.Write(slotNumber); Console.WriteLine(); } } }