Ejemplo n.º 1
0
 private async Task CollectAsync(Server server, string type)
 {
     try
     {
         OutputTextBox.AppendText(string.Format("Coletando Logs de {0}...\n", server.Host));
         string             collectCommand = string.Format("racadm techsupreport collect -t {0}", type);
         IdracSshController idrac          = new IdracSshController(server);
         string             result         = idrac.RunCommand(collectCommand);
         string             jobLine        = result.Split('\n').FirstOrDefault();
         string             jobId          = jobLine.Split('=')[1].Trim();
         IdracJob           job            = await new JobController(server).GetJobAsync(jobId);
         var load = new LoadWindow(server, job)
         {
             Title = server.Host
         };
         load.Closed += (object sender, EventArgs e) =>
         {
             var window = (LoadWindow)sender;
             job = window.Job;
             if (job.JobState.Contains("Completed"))
             {
                 ExportTsr(server);
             }
         };
         load.Show();
     }
     catch (Exception ex)
     {
         OutputTextBox.AppendText(string.Format("Falha ao coletar TSR de {0}, {1}\n", server.Host, ex.Message));
     }
 }
Ejemplo n.º 2
0
 private async Task RunScriptAsync(string path)
 {
     foreach (Server server in ServersListBox.Items)
     {
         if (!await NetworkHelper.CheckConnectionAsync(server.Host))
         {
             OutputTextBox.AppendText(string.Format("Servidor {0} inacessivel.\n", server.Host));
             continue;
         }
         try
         {
             OutputTextBox.AppendText(string.Format("Aplicando script para {0}\n", server.Host));
             var      idrac  = new IdracSshController(server);
             string[] script = File.ReadAllLines(path);
             foreach (var command in script)
             {
                 idrac.RunCommand(command);
             }
         }
         catch (Exception ex)
         {
             OutputTextBox.AppendText(string.Format("Falha ao executar o script para {0} : {1}\n", server.Host, ex.Message));
         }
     }
     ApplyButton.IsEnabled = true;
     ClearButton.IsEnabled = true;
 }
Ejemplo n.º 3
0
        private string GetPowerStatus(Server server)
        {
            string             command = "racadm serveraction powerstatus";
            IdracSshController idrac   = new IdracSshController(server);
            string             result  = idrac.RunCommand(command);

            return(result.Split(':')[1].Trim());
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Retorna a iDRAC para a condição anterior
        /// </summary>
        /// <param name="server">Dados do servidor</param>
        private void RestoreIdrac(Server server)
        {
            IdracSshController idrac = new IdracSshController(server);

            idrac.RunCommand("racadm -d remoteimage");
            idrac.RunCommand("racadm set iDRAC.serverboot.FirstBootDevice Normal");
            idrac.RunCommand("racadm set iDRAC.serverboot.BootOnce 0");
        }
Ejemplo n.º 5
0
        private async Task UpdateFirmwareAsync(string repository, string catalog, string reboot)
        {
            foreach (Server server in ServersListBox.Items)
            {
                if (!await NetworkHelper.CheckConnectionAsync(server.Host))
                {
                    OutputTextBox.AppendText(string.Format("Servidor {0} ínacessivel.\n", server));
                    continue;
                }
                try
                {
                    OutputTextBox.AppendText(string.Format("Atualizando firmwares de {0}...\n", server));
                    string jobId    = "";
                    var    idrac    = new IdracSshController(server);
                    string command  = string.Format(@"racadm update -f {0} -e {1} -a {2} -t FTP", catalog, repository, reboot);
                    string response = idrac.RunCommand(command);
                    foreach (var item in response.Split(' '))
                    {
                        if (item.Contains("JID"))
                        {
                            jobId = item.Split('"').FirstOrDefault();
                            break;
                        }
                    }
                    if (String.IsNullOrEmpty(jobId)) // Caso Haja problema na criação do Job ele retorna ""
                    {
                        continue;
                    }

                    var      idracJob     = new JobController(server);
                    var      idracChassis = new ChassisController(server);
                    IdracJob job          = await idracJob.GetJobAsync(jobId);

                    Chassis chassis = await idracChassis.GetChassisAsync();

                    currentJobs.TryAdd(job.Id, new ServerJob()
                    {
                        Server = server, Job = job, SerialNumber = chassis.SKU
                    });
                    OutputTextBox.AppendText(string.Format("Criado {0} para atualizaçao do servidor {1}\n", jobId, server));
                }
                catch (Exception ex)
                {
                    OutputTextBox.AppendText(string.Format("Falha ao atualizar {0} {1}\n", server, ex.Message));
                }
            }
            UpdateButton.IsEnabled = true;
        }
Ejemplo n.º 6
0
        private Task InstallOs(Server server, string image, string user, string password)
        {
            OutputTextBox.AppendText(string.Format("Iniciando instalação para {0}\n", server.Host));

            return(Task.Run(() =>
            {
                try
                {
                    IdracSshController idrac = new IdracSshController(server);

                    string command = string.Format("racadm remoteimage -c -u {0} -p {1} -l {2}", user, password, image);

                    idrac.RunCommand(command);
                    idrac.RunCommand("racadm set iDRAC.serverboot.FirstBootDevice VCD-DVD");
                    idrac.RunCommand("racadm set iDRAC.serverboot.BootOnce 1");

                    if (GetPowerStatus(server).Equals("ON"))
                    {
                        idrac.RunCommand("racadm serveraction powercycle");
                    }
                    else
                    {
                        idrac.RunCommand("racadm serveraction powerup");
                    }

                    Dispatcher.Invoke(() =>
                    {
                        OutputTextBox.AppendText(string.Format("Iniciada instalação no servidor {0}\n", server.Host));
                    });
                }
                catch
                {
                    Dispatcher.Invoke(() =>
                    {
                        OutputTextBox.AppendText(string.Format("Falha na instalação de S.O no servidor {0}\n", server.Host));
                    });
                }
            }));
        }