Exemplo n.º 1
0
        //проблема с многопоточностью
        //наверняка нужно создавать новый контекст для каждого потока
        //или опрашивать и сохранять данные локально с последующей выгрузкой в базу данных
        private void Connection(FavoriteConnect favConnect)
        {
            RemoteTask    task     = favConnect.task;
            List <string> commands = favConnect.commands;
            Favorite      fav      = favConnect.favorite;
            //данные для подключения к сетевому устройству
            ConnectionData data = new ConnectionData();

            data.address  = fav.Address;
            data.port     = fav.Port;
            data.username = fav.Credential.Username;
            data.password = fav.Credential.Password;

            //по типу протоколу выбираем требуемое подключение
            string protocol = fav.Protocol.Name;

            Expect.Expect expect;
            switch (protocol)
            {
            case "Telnet": expect = new TelnetMintExpect(data); break;

            case "SSH": expect = new SshExpect(data); break;

            //по умолчанию для сетевых устройств протокол Telnet
            default: expect = new TelnetMintExpect(data); break;
            }

            //если объект expect успешно создан
            if (expect != null)
            {
                //выполняем список команд
                expect.ExecuteCommands(commands);
                string result  = expect.GetResult();
                bool   success = expect.isSuccess;
                string error   = expect.GetError();
                //если успешно сохраняем конфигурацию устройства
                if (success)
                {
                    Config config = new Config();
                    config.Current = result;
                    config.Date    = DateTime.Now;
                    fav.Configs.Add(config);
                }
                //создаем отчет о проделанном задании
                Report report = new Report();
                report.Date     = DateTime.Now;
                report.Status   = success;
                report.Info     = error;
                report.Task     = task;
                report.Favorite = fav;
                context.Reports.Add(report);
                context.SaveChanges();
            }
        }
Exemplo n.º 2
0
        //подключение к сетевому устройству
        private void Connection(List <string> commands)
        {
            using (RconfigContext context = new RconfigContext())
            {
                var fav = (from c in context.Favorites
                           where c.Hostname == favName
                           select c).Single();
                if (fav != null)
                {
                    //данные для подключения к сетевому устройству
                    ConnectionData data = new ConnectionData();
                    data.address        = fav.Address;
                    data.port           = fav.Port;
                    data.username       = fav.Credential.Username;
                    data.password       = fav.Credential.Password;
                    data.enableMode     = fav.Category.EnableModeRequired;
                    data.enablePassword = fav.Credential.EnablePassword;
                    //по типу протоколу выбираем требуемое подключение
                    string        protocol = fav.Protocol.Name;
                    Expect.Expect expect;
                    switch (protocol)
                    {
                    case "Telnet": expect = new TelnetMintExpect(data); break;

                    case "SSH": expect = new SshExpect(data); break;

                    //по умолчанию для сетевых устройств протокол Telnet
                    default: expect = new TelnetMintExpect(data); break;
                    }

                    //если объект expect успешно создан
                    if (expect != null)
                    {
                        //выполняем список команд
                        expect.ExecuteCommands(commands);
                        string result  = expect.GetResult();
                        bool   success = expect.isSuccess;
                        string error   = expect.GetError();
                        //если успешно сохраняем конфигурацию устройства
                        if (success)
                        {
                            richTextBoxConfig.Text = result;
                        }
                        else
                        {
                            richTextBoxConfig.Text = error;
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        //исполнение команды для устройства
        private void Connection(FavoriteConnect favConnect)
        {
            RemoteTask    task     = favConnect.task;
            List <string> commands = favConnect.commands;
            Favorite      fav      = favConnect.favorite;
            //данные для подключения к сетевому устройству
            ConnectionData data = new ConnectionData();

            data.address        = fav.Address;
            data.port           = fav.Port;
            data.username       = fav.Credential.Username;
            data.password       = fav.Credential.Password;
            data.enableMode     = fav.Category.EnableModeRequired;
            data.enablePassword = fav.Credential.EnablePassword;
            //по типу протоколу выбираем требуемое подключение
            string protocol = fav.Protocol.Name;

            Expect.Expect expect;
            switch (protocol)
            {
            case "Telnet": expect = new TelnetMintExpect(data); break;

            case "SSH": expect = new SshExpect(data); break;

            //по умолчанию для сетевых устройств протокол Telnet
            default: expect = new TelnetMintExpect(data); break;
            }

            //если объект expect успешно создан
            if (expect != null)
            {
                //выполняем список команд
                expect.ExecuteCommands(commands);
                //если возвращает пустую строку, то выдает исключение
                string result  = expect.GetResult();
                bool   success = expect.isSuccess;
                string error   = expect.GetError();
                //если успешно сохраняем конфигурацию устройства
                if (success)
                {
                    Config config = new Config();
                    config.Current = result ?? "Empty";//если строка пустая, вернуть Empty
                    config.Date    = DateTime.Now;
                    fav.Configs.Add(config);
                    Logging(string.Format("TASK {0} : success connection for {0} {1}", taskId, fav.Hostname, fav.Address));
                }
                else
                {
                    Logging(string.Format("TASK {0} : failed connection for {0} {1}!!!", taskId, fav.Hostname, fav.Address));
                }
                //создаем отчет о проделанном задании
                Report report = new Report();
                report.Date     = DateTime.Now;
                report.Status   = success;
                report.Info     = error;
                report.Task     = task;
                report.Favorite = fav;
                context.Reports.Add(report);
                context.SaveChanges();
            }
        }