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)); } }
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; }
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()); }
/// <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"); }
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; }
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)); }); } })); }