diff --git a/Arrange16.png b/Arrange16.png new file mode 100644 index 0000000..d596884 Binary files /dev/null and b/Arrange16.png differ diff --git a/Arrange16.svg b/Arrange16.svg new file mode 100644 index 0000000..ffd13e4 --- /dev/null +++ b/Arrange16.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Arrange24.png b/Arrange24.png new file mode 100644 index 0000000..962945e Binary files /dev/null and b/Arrange24.png differ diff --git a/Arrange24.svg b/Arrange24.svg new file mode 100644 index 0000000..b6814f5 --- /dev/null +++ b/Arrange24.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Check16.png b/Check16.png new file mode 100644 index 0000000..53a9f64 Binary files /dev/null and b/Check16.png differ diff --git a/Check16.svg b/Check16.svg new file mode 100644 index 0000000..a67fc95 --- /dev/null +++ b/Check16.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + diff --git a/Check16b.png b/Check16b.png new file mode 100644 index 0000000..cfae844 Binary files /dev/null and b/Check16b.png differ diff --git a/Check24.png b/Check24.png new file mode 100644 index 0000000..b411352 Binary files /dev/null and b/Check24.png differ diff --git a/Check24.svg b/Check24.svg new file mode 100644 index 0000000..3dd35dc --- /dev/null +++ b/Check24.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + diff --git a/Delete24.png b/Delete24.png new file mode 100644 index 0000000..4529151 Binary files /dev/null and b/Delete24.png differ diff --git a/Delete24.svg b/Delete24.svg new file mode 100644 index 0000000..c5870c9 --- /dev/null +++ b/Delete24.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Delete256.png b/Delete256.png new file mode 100644 index 0000000..8b8307d Binary files /dev/null and b/Delete256.png differ diff --git a/Delete256.svg b/Delete256.svg new file mode 100644 index 0000000..bf0bc26 --- /dev/null +++ b/Delete256.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Deleteb16.png b/Deleteb16.png new file mode 100644 index 0000000..92268d0 Binary files /dev/null and b/Deleteb16.png differ diff --git a/Deleteb16.svg b/Deleteb16.svg new file mode 100644 index 0000000..afa7bcf --- /dev/null +++ b/Deleteb16.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FormParameters.Designer.cs b/FormParameters.Designer.cs new file mode 100644 index 0000000..13e72b0 --- /dev/null +++ b/FormParameters.Designer.cs @@ -0,0 +1,125 @@ +namespace SSH_Test +{ + partial class FormParameters + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormParameters)); + this.buttonOK = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.dataGridViewParameters = new System.Windows.Forms.DataGridView(); + this.Parameters = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Values = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.richTextBoxHelper = new System.Windows.Forms.RichTextBox(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewParameters)).BeginInit(); + this.SuspendLayout(); + // + // buttonOK + // + this.buttonOK.Location = new System.Drawing.Point(207, 191); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(120, 30); + this.buttonOK.TabIndex = 2; + this.buttonOK.Text = "OK"; + this.buttonOK.UseCompatibleTextRendering = true; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.bOK_Click); + // + // buttonCancel + // + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.buttonCancel.Location = new System.Drawing.Point(81, 191); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(120, 30); + this.buttonCancel.TabIndex = 3; + this.buttonCancel.Text = "Cancel"; + this.buttonCancel.UseCompatibleTextRendering = true; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // dataGridViewParameters + // + this.dataGridViewParameters.AllowDrop = true; + this.dataGridViewParameters.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridViewParameters.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Parameters, + this.Values}); + this.dataGridViewParameters.Location = new System.Drawing.Point(13, 13); + this.dataGridViewParameters.Name = "dataGridViewParameters"; + this.dataGridViewParameters.Size = new System.Drawing.Size(396, 172); + this.dataGridViewParameters.TabIndex = 1; + this.dataGridViewParameters.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewParameters_CellClick); + this.dataGridViewParameters.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewParameters_CellEndEdit); + this.dataGridViewParameters.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dataGridViewParameters_CellFormatting); + // + // Parameters + // + this.Parameters.HeaderText = "Parameters"; + this.Parameters.Name = "Parameters"; + this.Parameters.Width = 150; + // + // Values + // + this.Values.HeaderText = "Values"; + this.Values.Name = "Values"; + this.Values.Width = 200; + // + // richTextBoxHelper + // + this.richTextBoxHelper.Location = new System.Drawing.Point(415, 13); + this.richTextBoxHelper.Name = "richTextBoxHelper"; + this.richTextBoxHelper.Size = new System.Drawing.Size(682, 208); + this.richTextBoxHelper.TabIndex = 4; + this.richTextBoxHelper.Text = ""; + // + // FormParameters + // + this.AcceptButton = this.buttonOK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.buttonCancel; + this.ClientSize = new System.Drawing.Size(1098, 222); + this.Controls.Add(this.richTextBoxHelper); + this.Controls.Add(this.dataGridViewParameters); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FormParameters"; + this.Text = "Parameters Input Form"; + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewParameters)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.DataGridView dataGridViewParameters; + private System.Windows.Forms.RichTextBox richTextBoxHelper; + private System.Windows.Forms.DataGridViewTextBoxColumn Parameters; + private System.Windows.Forms.DataGridViewTextBoxColumn Values; + } +} \ No newline at end of file diff --git a/FormParameters.cs b/FormParameters.cs new file mode 100644 index 0000000..40ccb57 --- /dev/null +++ b/FormParameters.cs @@ -0,0 +1,107 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.UI.WebControls; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; +using TextBox = System.Windows.Forms.TextBox; + + +namespace SSH_Test +{ + public partial class FormParameters : Form + { + public Dictionary dParameters{ get; set; } + public FormParameters(Dictionary parameters, string helpertext, string formtext) + { + InitializeComponent(); + dParameters = new Dictionary(); + dParameters = parameters; + this.Text = formtext; + for (int i = 0; i < parameters.Count; i++) + { + string sKey = parameters.ElementAt(i).Key; + dataGridViewParameters.Rows.Add(sKey, parameters[sKey]); + + } + this.dataGridViewParameters.AllowUserToAddRows = false; + // Put edit cursor on the first row + this.dataGridViewParameters.CurrentCell = dataGridViewParameters.Rows[0].Cells[1]; + this.dataGridViewParameters.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewParameters_CellEnter); + this.dataGridViewParameters.Focus(); + this.dataGridViewParameters.AllowDrop = true; + this.dataGridViewParameters.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText; + this.richTextBoxHelper.Text = helpertext; + richTextBoxHelper.SelectionStart = richTextBoxHelper.Text.Length; + richTextBoxHelper.ScrollToCaret(); + + } + + private void bOK_Click(object sender, EventArgs e) + { + + + for (int i = 0; i < dParameters.Count; i++) + { + if (dataGridViewParameters.Rows[i].Cells[1].Value != null) + dParameters[dataGridViewParameters.Rows[i].Cells[0].Value.ToString()] = dataGridViewParameters.Rows[i].Cells[1].Value.ToString().TrimEnd().TrimStart(); + + } + this.DialogResult = DialogResult.OK; + this.Close(); + } + + //to skip TAB stop at the colummn "parameters" 1 + private void dataGridViewParameters_CellEnter(object sender, DataGridViewCellEventArgs e) + { + // Check if the current column is the one you want to skip + if (e.ColumnIndex == 0) // Use the zero-based index of your column + { + // Send a Tab key press to move to the next cell + SendKeys.Send("{TAB}"); + } + } + + private void dataGridViewParameters_CellClick(object sender, DataGridViewCellEventArgs e) + { + // Ensure the click is on a valid cell and not the header + if (e.RowIndex >= 0 && e.ColumnIndex >= 0) + { + // Set the cell as the current cell (if not already) + dataGridViewParameters.CurrentCell = dataGridViewParameters.Rows[e.RowIndex].Cells[e.ColumnIndex]; + + // Start the edit mode immediately + dataGridViewParameters.BeginEdit(true); + } + } + + private void dataGridViewParameters_CellEndEdit(object sender, DataGridViewCellEventArgs e) + { + string sTemp = (string)dataGridViewParameters.Rows[e.RowIndex].Cells[1].Value; + if (sTemp != null) + dParameters[(string)dataGridViewParameters.Rows[e.RowIndex].Cells[0].Value] = sTemp; + if (e.RowIndex == dataGridViewParameters.RowCount - 1) + dataGridViewParameters.Rows[e.RowIndex].Cells[1].Selected = false; + + } + + private void dataGridViewParameters_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) + { + //mask password cells + // check if it is the value column + if (e.ColumnIndex == 1 && e.Value != null) + if (dParameters.ElementAt(e.RowIndex).Key.Contains("Password")) + { + e.Value = new String('*', e.Value.ToString().Length); + e.FormattingApplied = true; + } + + } + } +} diff --git a/FormParameters.resx b/FormParameters.resx new file mode 100644 index 0000000..6d6734c --- /dev/null +++ b/FormParameters.resx @@ -0,0 +1,1158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + + + 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 + + + \ No newline at end of file diff --git a/Load24.png b/Load24.png new file mode 100644 index 0000000..2aa1285 Binary files /dev/null and b/Load24.png differ diff --git a/Load24.svg b/Load24.svg new file mode 100644 index 0000000..ec94092 --- /dev/null +++ b/Load24.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + diff --git a/Load24b.png b/Load24b.png new file mode 100644 index 0000000..8b02dc2 Binary files /dev/null and b/Load24b.png differ diff --git a/Run16.png b/Run16.png new file mode 100644 index 0000000..f4a543a Binary files /dev/null and b/Run16.png differ diff --git a/Run16.svg b/Run16.svg new file mode 100644 index 0000000..815a098 --- /dev/null +++ b/Run16.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/Run16b.png b/Run16b.png new file mode 100644 index 0000000..5003e5d Binary files /dev/null and b/Run16b.png differ diff --git a/Run24.png b/Run24.png new file mode 100644 index 0000000..f032546 Binary files /dev/null and b/Run24.png differ diff --git a/Run24.svg b/Run24.svg new file mode 100644 index 0000000..44ea148 --- /dev/null +++ b/Run24.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/Run24b.png b/Run24b.png new file mode 100644 index 0000000..f401d79 Binary files /dev/null and b/Run24b.png differ diff --git a/Save24.png b/Save24.png new file mode 100644 index 0000000..74dbd40 Binary files /dev/null and b/Save24.png differ diff --git a/Save24.svg b/Save24.svg new file mode 100644 index 0000000..1fb6395 --- /dev/null +++ b/Save24.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + diff --git a/Save24b.png b/Save24b.png new file mode 100644 index 0000000..4816aa6 Binary files /dev/null and b/Save24b.png differ diff --git a/UnCheck16.svg b/UnCheck16.svg new file mode 100644 index 0000000..bd2c0a5 --- /dev/null +++ b/UnCheck16.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + diff --git a/Unckeck16.png b/Unckeck16.png new file mode 100644 index 0000000..6118944 Binary files /dev/null and b/Unckeck16.png differ diff --git a/Utilities.cs b/Utilities.cs new file mode 100644 index 0000000..bcd9938 --- /dev/null +++ b/Utilities.cs @@ -0,0 +1,753 @@ +using log4net; +using log4net.Core; +using Renci.SshNet; +using SSH_Test; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SSH_Test +{ + public class Utilities + { + + public static ILog log; + public Utilities(ILog Log) + { + log = Log; + } + public static string RunaTask(cTask currentTask, Profile profile, cConInfo conInfo) + { + + string result = "-------------------------------------------------------------------------\n"; + result += string.Format("{0:s} Task: {1}, profile: {2} \n", DateTime.Now, currentTask.sTaskDescription, currentTask.sProfile); + result += "-------------------------------------------------------------------------\n"; + cHostInfo hostInfo = new cHostInfo(); + log.Info(string.Format("Run task: {0}, profile: {1}", currentTask.sTaskDescription, currentTask.sProfile)); + + //foreach (var c in currentTask.dParameters) + // log.Info(string.Format("Parameter {0}: {1}", c.Key, c.Value)); + + switch (profile.ProfileType) + { + case "SSH": + hostInfo.host = currentTask.dParameters["{IP Address}"]; + hostInfo.username = currentTask.dParameters["{User Name}"]; + hostInfo.password = currentTask.dParameters["{Password}"]; + hostInfo.device = currentTask.sTaskDevice.ToString(); + hostInfo.dParameters = new Dictionary(); + hostInfo.Commands = profile.ProfileCommands; + + + + try + { + Thread thread1 = new Thread(new ParameterizedThreadStart(fSSH)); + hostInfo.TftpIP = conInfo.sTftpIP; + hostInfo.SftpIP = conInfo.sTftpIP; + hostInfo.SftpPassword = conInfo.sTftpPassword; + hostInfo.SftpUsername = conInfo.sTftpUsername; + thread1.Start(hostInfo); + } + catch (Exception ex1) + { + log.Error(ex1); + } + + break; + + case "SSH_Catalyst": + + hostInfo.host = currentTask.dParameters["{IP Address}"]; + hostInfo.username = currentTask.dParameters["{User Name}"]; + hostInfo.password = currentTask.dParameters["{Password}"]; + hostInfo.device = currentTask.sTaskDevice.ToString(); + hostInfo.dParameters = new Dictionary(); + hostInfo.Commands = profile.ProfileCommands; + try + { + Thread thread2 = new Thread(new ParameterizedThreadStart(fSSH_Catalyst)); + hostInfo.TftpIP = conInfo.sTftpIP; + hostInfo.SftpIP = conInfo.sTftpIP; + hostInfo.SftpPassword = conInfo.sTftpPassword; + hostInfo.SftpUsername = conInfo.sTftpUsername; + thread2.Start(hostInfo); + } + catch (Exception ex1) + { + log.Error(ex1); + + } + + + break; + + + case "RAC9": + int i = 0; + string command = ""; + + + //if (!conInfo.bisLocal) + //{ + // command = " --nocertwarn -r " + conInfo.sIDracIP + " -u " + conInfo.sIDracUsername + " -p " + conInfo.sIDracPassword + " "; + //} + + foreach (string c in profile.ProfileCommands) + { + Process process = new Process(); + process.StartInfo.FileName = "racadm.exe"; + process.StartInfo.UseShellExecute = false; // Required for 'runas' verb + process.StartInfo.Verb = "runas"; // Request administrator privileges + process.StartInfo.WorkingDirectory = Environment.CurrentDirectory; // current working dir + process.StartInfo.RedirectStandardOutput = true; + + //log.Info(string.Format("From RAC9 try to run: {0}", c)); + log.Info(string.Format("From RAC9 try to run: {0}", c)); + try + { + + string tempfile = DateTime.Now.ToString().Replace(":", "").Replace(" ", "") + ".txt"; + + process.StartInfo.Arguments = command + " " + c; + + process.Start(); + string temp = process.StandardOutput.ReadToEnd(); + log.Info(string.Format("From RAC9 {0}: {1}", currentTask.sTaskDevice.ToString(), result)); + result += temp; + process.WaitForExit(); + + + } + catch (Win32Exception ex) + { + log.Error(string.Format($"Error: {ex.Message}. The user likely declined the UAC prompt.")); + + } + } + break; + + case "CMD": + + foreach (string c in profile.ProfileCommands) + { + command = " "; + i = 0; + + //apply values to parameters accordingly + try + { + if (profile.ProfileParameters.Length > 0) + { + string ee = c; + foreach (string ss in profile.ProfileParameters) + { + + ee = ee.Replace(ss, currentTask.dParameters[ss]); + + } + + //log.Info(string.Format("{0} => {1}", c, ee)); + command += ee; + + } + else + command = c; + + } + catch (Exception ex) + { } + + + //log.Info(command); + + + + // create a process + Process process = new Process(); + process.StartInfo.FileName = "cmd.exe"; + process.StartInfo.UseShellExecute = false; // Required for 'runas' verb + process.StartInfo.Verb = "runas"; // Request administrator privileges + process.StartInfo.WorkingDirectory = Environment.CurrentDirectory; // current working dir + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.RedirectStandardInput = true; + + try + { + + process.StartInfo.Arguments = string.Format(" /c {0}", command); + //log.Info(string.Format("command to run: {0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments)); + + process.Start(); + + StreamReader sr = process.StandardOutput; + StreamWriter si = process.StandardInput; + si.Write("\n"); + string temp = sr.ReadToEnd(); + + + log.Info(string.Format("From CMD {0}: {1}", currentTask.sTaskDevice.ToString(), temp)); + result += temp; + process.WaitForExit(); + + + } + catch (Win32Exception ex) + { + log.Error(ex); + } + i++; + } + break; + + case "Powershell": + + foreach (string c in profile.ProfileCommands) + { + command = ""; + i = 0; + + //apply values to parameters accordingly + try + { + if (profile.ProfileParameters.Length > 0) + { + string ee = c; + foreach (string ss in profile.ProfileParameters) + { + + ee = ee.Replace(ss, currentTask.dParameters[ss]); + + } + //log.Info(string.Format("{0} => {1}", c, ee)); + command += ee; + + } + else + command = c; + + } + catch (Exception ex) + { } + + + log.Info(command); + + Process process = new Process(); + process.StartInfo.FileName = "powershell"; + process.StartInfo.UseShellExecute = false; // Required for 'runas' verb + process.StartInfo.Verb = "runas"; // Request administrator privileges + process.StartInfo.RedirectStandardOutput = true; + string folderPathPS = Environment.CurrentDirectory + "\\PS\\"; + process.StartInfo.WorkingDirectory = folderPathPS; // current working dir + + log.Info(process.StartInfo.WorkingDirectory); + // check if Powershell Script folder "PS" exists, if not , create one. + if (!Directory.Exists(folderPathPS)) + { + Directory.CreateDirectory(folderPathPS); + log.Info(string.Format("Cound not find folder PS, create new {0}", folderPathPS)); + + } + + + + try + { + // will create temporary ps script file from command for better compatibility + + string tempfile = Path.GetRandomFileName() + ".ps1"; + + if (command.Contains("-File") || command.Contains("-file")) + { + // command contains "-File" for running a script, do nothing + command = "-NoProfile -ExecutionPolicy Bypass " + command; + } + else + { + //create ps script file from command + try + { + File.WriteAllText(".\\PS\\" + tempfile, command); + } + catch + { + log.Error(string.Format("Cannot create or write temporary Powershell script file {0}", tempfile)); + } + command = string.Format("-NoProfile -ExecutionPolicy Bypass -File {0}", tempfile); + + } + //log.Info(string.Format(command)); + process.StartInfo.Arguments = command; + + process.Start(); + string temp = process.StandardOutput.ReadToEnd(); + log.Info(string.Format("From Powershell {0}: {1}", currentTask.sTaskDevice.ToString(), temp)); + result += temp; + + process.WaitForExit(); + try + { + File.Delete(".\\PS\\" + tempfile); + log.Info(string.Format("Deleted temporary PS file: ", tempfile)); + } + catch (Exception ex) + { + log.Error(string.Format("Cannot delete temporary PS file: ", tempfile)); + log.Error(ex); + } + + + } + catch (Win32Exception ex) + { + log.Error(ex); + + } + i++; + } + break; + + default: + break; + + } + result += "\n#########################################################################################################\n\n"; + return result; + } + + + // SSH + public static void fSSH(object data) + { + try + { + cHostInfo hostinfo = (cHostInfo)data; + string host = hostinfo.host; + string device = hostinfo.device; + string username = hostinfo.username; + string password = hostinfo.password; + string tftpIp = hostinfo.TftpIP; + string sftpIp = hostinfo.SftpIP; + string sftpUsername = hostinfo.SftpUsername; + string sftpPassword = hostinfo.SftpPassword; + string[] Commands = hostinfo.Commands; + var client = new SshClient(hostinfo.host, hostinfo.username, hostinfo.password); + log.Info(string.Format("From fSSH {0}: Establishing a connection", device)); + + + client.Connect(); + log.Info(client.ConnectionInfo.ServerVersion); + + if (client.IsConnected) + { + var shellStream = client.CreateShellStream("xterm", 80, 24, 800, 600, 1024); + var output = ""; + var result = ""; + + //wait for "User Name:" + + output = shellStream.Expect(new Regex(@"Name:|name:")); + log.Info(string.Format("From fSSH {0}: {1}", device, output)); + + + //send username + shellStream.WriteLine(username); + + //wait for "Password:" + output = shellStream.Expect(new Regex(@"word:")); + log.Info(string.Format("From fSSH {0}: {1}", device, output)); + + //send password + shellStream.WriteLine(password); + + //wait for "Prompt:" + output = shellStream.Expect(new Regex(@"#")); + log.Info(string.Format("From fSSH {0}: {1}", device, output)); + + output = ""; + + //create filename + string datetime = DateTime.Now.ToString().Replace(":", ""); + datetime = datetime.Replace(" ", "_"); + // string filePath = string.Format("{0}_{1}.txt", currentTask.sTaskDevice, datetime.Replace("-", "")); + string filePath = string.Format("{0}_{1}.txt", device, datetime.Replace("-", "")); + + foreach (string c in Commands) + { + switch (c) + { + //enable + case "enable": + output = ""; + shellStream.WriteLine(c); + //wait for "Password:" + output = shellStream.Expect(new Regex(@"word:")); + log.Info(string.Format("From fSSH {0}: {1}", device, c)); + + + //send password + shellStream.WriteLine(password); + break; + + // tftp + case string s when Regex.IsMatch(c, @"tftp"): + output = ""; + string command = string.Format("{0}{1}/{2}", c, tftpIp, filePath); + log.Info(string.Format("From fSSH {0}: {1}", device, command)); + + + //send tftp command + shellStream.WriteLine(command); + + + //wait "" to send "space" and loop until get prompt + while (!Regex.IsMatch(output, "#")) + { + output = shellStream.Expect(new Regex(@"More||#")); + + shellStream.WriteLine(" "); + string[] lines = output.Split('\n'); + var output1 = ""; + for (int ii = 0; ii < (lines.Length - 1); ii++) + output1 += lines[ii]; + log.Info(output1); + + result += output1; + } + break; + default: + shellStream.WriteLine(c); + //wait for "Prompt:" + output = shellStream.Expect(new Regex(@"#")); + log.Info(string.Format("From fSSH_Test {0}: {1}", device, output)); + + break; + + } + } + } + + client.Disconnect(); + log.Info(string.Format("From SSH_Test: Disconnected")); + + } + catch (Exception e) + { + log.Error("SSH function: cannot run SSH"); + log.Error(e); + + } + + } + public static void fSSH_Catalyst(object data) + { + try + { + cHostInfo hostinfo = (cHostInfo)data; + + string host = hostinfo.host; + string device = hostinfo.device; + string username = hostinfo.username; + string password = hostinfo.password; + string tftpIp = hostinfo.TftpIP; + string sftpIp = hostinfo.SftpIP; + string sftpUsername = hostinfo.SftpUsername; + string sftpPassword = hostinfo.SftpPassword; + string[] Commands = hostinfo.Commands; + + var client = new SshClient(hostinfo.host, hostinfo.username, hostinfo.password); + log.Info(string.Format("From fSSH_Catalyst {0}: Establishing a connection {1}", device, host)); + + + client.Connect(); + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, client.ConnectionInfo.ServerVersion)); + + + + if (client.IsConnected) + { + var shellStream = client.CreateShellStream("xterm", 80, 24, 800, 600, 1024); + var output = ""; + var result = ""; + var prompt = ""; + //output = ""; + output = shellStream.Expect(new Regex(@"#")); + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, output)); + + prompt = output; + + shellStream.WriteLine(""); + shellStream.Flush(); + + output = shellStream.Expect(new Regex(prompt)); + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, output)); + + + //create filename + string datetime = DateTime.Now.ToString().Replace(":", ""); + datetime = datetime.Replace(" ", "_"); + // string filePath = string.Format("{0}_{1}.txt", currentTask.sTaskDevice, datetime.Replace("-", "")); + string filePath = string.Format("{0}_{1}.txt", device, datetime.Replace("-", "")); + + foreach (string c in Commands) + { + switch (c) + { + //enable + case "enable": + output = ""; + shellStream.WriteLine(c); + //wait for "Password:" + output = shellStream.Expect(new Regex(@"word:")); + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, c)); + + + //send password + shellStream.WriteLine(password); + break; + + // tftp + case string s when Regex.IsMatch(c, @"tftp"): + output = ""; + + string command = string.Format("{0}{1}/{2}", c, tftpIp, filePath); + + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, command)); + //send tftp command + output = ""; + shellStream.WriteLine(command); + shellStream.Flush(); + + //handle shell interaction, wait for "?" then send "enter" + + output = shellStream.Expect(new Regex(@"\?")); + + log.Info(string.Format("From fSSH_Catalyst{0}: {1}", device, output)); + while (output.Contains("?")) + { + output = ""; + shellStream.WriteLine(""); + shellStream.Flush(); + output = shellStream.Expect(new Regex(@"\?|#")); + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, output)); + + } + + break; + default: + shellStream.WriteLine(c); + //wait for "Prompt:" + output = shellStream.Expect(prompt); + + log.Info(string.Format("From fSSH_Catalyst {0}: {1}", device, output)); + break; + + } + } + + } + + client.Disconnect(); + log.Info(string.Format("From SSH_Catalyst: Disconnected")); + + + } + catch (Exception e) + { + log.Error("SSH_Catalyst function: cannot run SSH_Catalyst"); + log.Error(e); + + } + } + + //Seriallize Tasklist to a Json file + public void SaveTasklist(List data, string filePath) + { + JsonSerializerOptions options = new JsonSerializerOptions + { + //save with indentation + WriteIndented = true, + // enable case insensitive + PropertyNameCaseInsensitive = true, + // ignore null property + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + + }; + string jsonString = JsonSerializer.Serialize(data, options); + File.WriteAllText(filePath, jsonString); + } + //Deseriallize Tasklist from a Json file + public List LoadTaskList(string filePath) + { + JsonSerializerOptions options = new JsonSerializerOptions + { + //save with indentation + WriteIndented = true, + // enable case insensitive + PropertyNameCaseInsensitive = true, + // ignore null property + DefaultIgnoreCondition = JsonIgnoreCondition.WhenReading + + }; + + if (File.Exists(filePath)) + { + try + { + string jsonString = File.ReadAllText(filePath); + log.Info("Process tasklist.json"); + + + return JsonSerializer.Deserialize>(jsonString,options); + log.Info("Process tasklist.json"); + } + catch (Exception ex) + { + //could not read tasklist.json properly + log.Error("Could not load tasklist.json"); + log.Error(ex); + + //return an empty list if file could not be read + + return new List(); + + } + + } + return new List(); // Return an empty list if file doesn't exist + } + //Seriallize Profile to a Json file + public void SaveProfile(List data, string filePath) + { + JsonSerializerOptions options = new JsonSerializerOptions + { + WriteIndented = true + }; + string jsonString = JsonSerializer.Serialize(data, options); + File.WriteAllText(filePath, jsonString); + } + + + //Deseriallize Profile from a Json file + public List LoadProfile(string filePath) + { + + if (File.Exists(filePath)) + { + try + { + string jsonString = File.ReadAllText(filePath); + log.Info("Process tasklist.json"); + return JsonSerializer.Deserialize>(jsonString); + } + catch (Exception ex) + { + //could not read profile.json properly + log.Error("Could not load profile.json"); + log.Error(ex); + + //return an empty list if file could not be read + + return new List(); + + } + + } + return new List(); // Return an empty list if file doesn't exist + } + } + + + public class cHostInfo + { + public string device { get; set; } + public string host { get; set; } + public string username { get; set; } + public string password { get; set; } + public string TftpIP { get; set; } + + public string SftpIP { get; set; } + public string SftpUsername { get; set; } + public string SftpPassword { get; set; } + public string[] Commands { get; set; } + public Dictionary dParameters { get; set; } + + public cHostInfo() + { + device = ""; + host = "localhost"; + username = ""; + password = ""; + TftpIP = "127.0.0.1"; + SftpIP = "127.0.0.1"; + SftpUsername = ""; + SftpPassword = ""; + } + + } + + + [Serializable] + public class cTask + { + public int iTaskNum { get; set; } + public String sTaskDescription { get; set; } + public String sTaskDevice { get; set; } + public bool bTaskSelect { get; set; } + public String sProfile { get; set; } + public Dictionary dParameters { get; set; } + public cTask() + { + this.iTaskNum = 0; + this.sTaskDescription = ""; + this.sTaskDevice = ""; + this.bTaskSelect = false; + this.sProfile = ""; + this.dParameters = new Dictionary(); + } + public cTask(int iTaskNum, string uTaskDescription, string uTaskDevice, bool bTaskSelect, string sProfile) + { + this.iTaskNum = iTaskNum; + this.sTaskDescription = uTaskDescription; + this.sTaskDevice = uTaskDevice; + this.bTaskSelect = bTaskSelect; + this.sProfile = sProfile; + this.dParameters = new Dictionary(); + } + } + + [Serializable] + public class cConInfo + { + + public String sTftpIP { get; set; } + public String sTftpUsername { get; set; } + public String sTftpPassword { get; set; } + public String sSftpIP { get; set; } + public String sSftpUsername { get; set; } + public String sSftpPassword { get; set; } + public cConInfo(string TftpIP, string TftpUsername, string TftpPassword, string SftpIP, String SftpUsername, String SftPassword) + { + this.sTftpIP = TftpIP; + this.sTftpUsername = TftpUsername; + this.sTftpPassword = TftpPassword; + this.sSftpIP = SftpIP; + this.sSftpUsername = SftpUsername; + this.sSftpPassword = SftPassword; + + } + } + + +} diff --git a/bin/Debug/BE_20260128154448 b/bin/Debug/BE_20260128154448 new file mode 100644 index 0000000..4071c2c --- /dev/null +++ b/bin/Debug/BE_20260128154448 @@ -0,0 +1,175 @@ +------------------------------------------------------------------------- +2026-01-28T15:44:37 Task: OS, profile: CMD_OS_name +------------------------------------------------------------------------- +OS Name: Microsoft Windows 11 Pro +OS Version: 10.0.26100 N/A Build 26100 + +######################################################################################################### + +------------------------------------------------------------------------- +2026-01-28T15:44:42 Task: GPU, profile: Powershell_VideoController +------------------------------------------------------------------------- + + +Caption : Intel(R) Iris(R) Xe Graphics +Description : Intel(R) Iris(R) Xe Graphics +InstallDate : +Name : Intel(R) Iris(R) Xe Graphics +Status : OK +Availability : 3 +ConfigManagerErrorCode : 0 +ConfigManagerUserConfig : False +CreationClassName : Win32_VideoController +DeviceID : VideoController1 +ErrorCleared : +ErrorDescription : +LastErrorCode : +PNPDeviceID : PCI\VEN_8086&DEV_46A6&SUBSYS_0B1A1028&REV_0C\3&11583659&0&10 +PowerManagementCapabilities : +PowerManagementSupported : +StatusInfo : +SystemCreationClassName : Win32_ComputerSystem +SystemName : BE +MaxNumberControlled : +ProtocolSupported : +TimeOfLastReset : +AcceleratorCapabilities : +CapabilityDescriptions : +CurrentBitsPerPixel : 32 +CurrentHorizontalResolution : 3840 +CurrentNumberOfColors : 4294967296 +CurrentNumberOfColumns : 0 +CurrentNumberOfRows : 0 +CurrentRefreshRate : 59 +CurrentScanMode : 4 +CurrentVerticalResolution : 2400 +MaxMemorySupported : +MaxRefreshRate : 59 +MinRefreshRate : 47 +NumberOfVideoPages : +VideoMemoryType : 2 +VideoProcessor : Intel(R) Iris(R) Xe Graphics Family +NumberOfColorPlanes : +VideoArchitecture : 5 +VideoMode : +AdapterCompatibility : Intel Corporation +AdapterDACType : Internal +AdapterRAM : 2147479552 +ColorTableEntries : +DeviceSpecificPens : +DitherType : 0 +DriverDate : 2025-09-15 6:00:00 PM +DriverVersion : 32.0.101.7077 +ICMIntent : +ICMMethod : +InfFilename : oem329.inf +InfSection : iADLPD_w11_DS +InstalledDisplayDrivers : C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_1428487d11dec111\igdum + dim64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_1428487d11de + c111\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_1 + 428487d11dec111\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch. + inf_amd64_1428487d11dec111\igd12umd64.dll +Monochrome : False +ReservedSystemPaletteEntries : +SpecificationVersion : +SystemPaletteEntries : +VideoModeDescription : 3840 x 2400 x 4294967296 colors +PSComputerName : + +Caption : NVIDIA RTX A2000 8GB Laptop GPU +Description : NVIDIA RTX A2000 8GB Laptop GPU +InstallDate : +Name : NVIDIA RTX A2000 8GB Laptop GPU +Status : OK +Availability : 3 +ConfigManagerErrorCode : 0 +ConfigManagerUserConfig : False +CreationClassName : Win32_VideoController +DeviceID : VideoController2 +ErrorCleared : +ErrorDescription : +LastErrorCode : +PNPDeviceID : PCI\VEN_10DE&DEV_25BA&SUBSYS_0B1A1028&REV_A1\4&3AFD7104&0&0008 +PowerManagementCapabilities : +PowerManagementSupported : +StatusInfo : +SystemCreationClassName : Win32_ComputerSystem +SystemName : BE +MaxNumberControlled : +ProtocolSupported : +TimeOfLastReset : +AcceleratorCapabilities : +CapabilityDescriptions : +CurrentBitsPerPixel : 32 +CurrentHorizontalResolution : 2560 +CurrentNumberOfColors : 4294967296 +CurrentNumberOfColumns : 0 +CurrentNumberOfRows : 0 +CurrentRefreshRate : 74 +CurrentScanMode : 4 +CurrentVerticalResolution : 1080 +MaxMemorySupported : +MaxRefreshRate : 0 +MinRefreshRate : +NumberOfVideoPages : +VideoMemoryType : 2 +VideoProcessor : NVIDIA RTX A2000 8GB Laptop GPU +NumberOfColorPlanes : +VideoArchitecture : 5 +VideoMode : +AdapterCompatibility : NVIDIA +AdapterDACType : Integrated RAMDAC +AdapterRAM : 4293918720 +ColorTableEntries : +DeviceSpecificPens : +DitherType : 0 +DriverDate : 2025-09-08 6:00:00 PM +DriverVersion : 32.0.15.8132 +ICMIntent : +ICMMethod : +InfFilename : oem334.inf +InfSection : Section396 +InstalledDisplayDrivers : C:\WINDOWS\System32\DriverStore\FileRepository\nvdm.inf_amd64_90330de7981ac658\nvldumdx. + dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvdm.inf_amd64_90330de7981ac658\nvldu + mdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvdm.inf_amd64_90330de7981ac658\n + vldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvdm.inf_amd64_90330de7981ac6 + 58\nvldumdx.dll +Monochrome : False +ReservedSystemPaletteEntries : +SpecificationVersion : +SystemPaletteEntries : +VideoModeDescription : 2560 x 1080 x 4294967296 colors +PSComputerName : + + + + +######################################################################################################### + +------------------------------------------------------------------------- +2026-01-28T15:44:43 Task: Windows Activation Status, profile: CMD_Windows_Activation_status +------------------------------------------------------------------------- +Microsoft (R) Windows Script Host Version 10.0 +Copyright (C) Microsoft Corporation. All rights reserved. + +Software licensing service version: 10.0.26100.7623 + +Name: Windows(R), Professional edition +Description: Windows(R) Operating System, OEM_DM channel +Activation ID: fe74f55b-0338-41d6-b267-4a201abe7285 +Application ID: 55c92734-d682-4d71-983e-d6ec3f16059f +Extended PID: 03612-03556-327-074596-02-4105-26100.0000-0062026 +Product Key Channel: OEM:DM +Installation ID: 111889452385229954395250916100480354128494265185422853403339921 +Use License URL: https://activation-v2.sls.microsoft.com/SLActivateProduct/SLActivateProduct.asmx?configextension=DM +Validation URL: https://validation-v2.sls.microsoft.com/SLWGA/slwga.asmx +Partial Product Key: KTP2T +License Status: Licensed +Remaining Windows rearm count: 1001 +Remaining SKU rearm count: 1001 +Trusted time: 2026-01-28 3:44:48 PM + + + +######################################################################################################### + diff --git a/bin/Debug/app.publish/SSH_Test.exe b/bin/Debug/app.publish/SSH_Test.exe new file mode 100644 index 0000000..37dea42 Binary files /dev/null and b/bin/Debug/app.publish/SSH_Test.exe differ diff --git a/bin/Debug/profile - Copy.json b/bin/Debug/profile - Copy.json new file mode 100644 index 0000000..6cb417d --- /dev/null +++ b/bin/Debug/profile - Copy.json @@ -0,0 +1,186 @@ +[ + { + "ProfileName": "Test", + "ProfileType": "CMD", + "ProfileCommands": [ + "command 1 {P00} {P01} {P02}", + "command 2 {P00} {P01}", + "command 3 {P00} {P03}" + ], + "ProfileParameters":[ + "{P00}", "{P01}", "{P02}", "{P03}" + ] + }, + { + "ProfileName": "Ipconfig", + "ProfileType": "CMD", + "ProfileCommands": [ + "Ipconfig /{P00}", + "Ipconfig /{P01}" + ], + "ProfileParameters":[ + "{P00}", "{P01}" + ] + }, + { + "ProfileName": "SSH_Cisco_Tftp_Running", + "ProfileType": "SSH", + "ProfileCommands": [ + "copy run tftp://" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "SSH_Cisco_Catalyst_Tftp_Running", + "ProfileType": "SSH_Catalyst", + "ProfileCommands": [ + "copy running-config tftp://" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "SSH_Cisco_Tftp_Startup", + "ProfileType": "SSH", + "ProfileCommands": [ + "copy startup-config tftp://" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "SSH_Cisco_Catalyst_Tftp_Startup", + "ProfileType": "SSH_Catalyst", + "ProfileCommands": [ + "copy startup-config tftp://" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_PS_status_dual", + "ProfileType": "RAC9", + "ProfileCommands": [ + "get system.power.supply.1", + "get system.power.supply.2" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_storage_pdisks", + "ProfileType": "RAC9", + "ProfileCommands": [ + "storage get get pdisks -o" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_networkinterfaces", + "ProfileType": "RAC9", + "ProfileCommands": [ + "gethostnetworkinterfaces" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_OS_name", + "ProfileType": "CMD", + "ProfileCommands": [ + "systeminfo | findstr /B /C:\"OS Name\" /B /C:\"OS Version\"" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_Windows_Activation_status", + "ProfileType": "CMD", + "ProfileCommands": [ + "cscript c:\\Windows\\System32\\slmgr.vbs /dlv" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_Windows_Enable_RemoteDesktop", + "ProfileType": "CMD", + "ProfileCommands": [ + "REG ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f", + "netsh advfirewall firewall add rule name=\"Remote Desktop (TCP-In)\" dir=in action=allow protocol=TCP localport=3389", + "net start TermService" + ], + "ProfileParameters": [] + }, + + + { + "ProfileName": "CMD_Avigilon_Version", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Get-WmiObject -Class Win32_Product | where vendor -eq Avigilon | select Name, Version" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_VideoController", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Get-CimInstance -ClassName Win32_VideoController" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_Avigilon_Servername", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Avigilon_Servername.ps1\"" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_ACPwrRcvry_On", + "ProfileType": "RAC9", + "ProfileCommands": [ + "set bios.Syssecurity.ACPwrRcvry On" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_Power_redundancy", + "ProfileType": "RAC9", + "ProfileCommands": [ + " get system.power.RedundancyPolicy" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_storage_vdisks", + "ProfileType": "RAC9", + "ProfileCommands": [ + "storage get vdisks -o -p layout,status,size" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_Commit_Changes_reboot_NOW", + "ProfileType": "RAC9", + "ProfileCommands": [ + "jobqueue create BIOS.Setup.1-1 -r pwrcycle -s TIME_NOW" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_Jobview_checkresult", + "ProfileType": "RAC9", + "ProfileCommands": [ + "jobqueue view" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_Reboot", + "ProfileType": "RAC9", + "ProfileCommands": [ + "serveraction hardreset" + ], + "ProfileParameters": [] + } +] \ No newline at end of file diff --git a/bin/Debug/tasklist - Copy (2).dat b/bin/Debug/tasklist - Copy (2).dat new file mode 100644 index 0000000..f780f5d Binary files /dev/null and b/bin/Debug/tasklist - Copy (2).dat differ diff --git a/bin/Debug/tasklist - Copy.json b/bin/Debug/tasklist - Copy.json new file mode 100644 index 0000000..c70ba3c --- /dev/null +++ b/bin/Debug/tasklist - Copy.json @@ -0,0 +1,228 @@ +[ + { + "iTaskNum": 1, + "sTaskDescription": "Bios enable Power on AC Recovery", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_ACPwrRcvry_On", + "dParameters": {} + }, + { + "iTaskNum": 2, + "sTaskDescription": "Change HostName", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Change Hostname", + "dParameters": { + "{New Host Name}": "" + } + }, + { + "iTaskNum": 3, + "sTaskDescription": "Reboot by IDRAC", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Commit_Changes_reboot_NOW", + "dParameters": {} + }, + { + "iTaskNum": 4, + "sTaskDescription": "Server have 2nd power supply?", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_PS_status_dual", + "dParameters": {} + }, + { + "iTaskNum": 5, + "sTaskDescription": "10GB ports", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_networkinterfaces", + "dParameters": {} + }, + { + "iTaskNum": 6, + "sTaskDescription": "OS", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_OS_name", + "dParameters": {} + }, + { + "iTaskNum": 7, + "sTaskDescription": "GPU", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_VideoController", + "dParameters": {} + }, + { + "iTaskNum": 8, + "sTaskDescription": "Power redundancy", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Power_redundancy", + "dParameters": {} + }, + { + "iTaskNum": 9, + "sTaskDescription": "Raid volume check", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_storage_vdisks", + "dParameters": {} + }, + { + "iTaskNum": 10, + "sTaskDescription": "Windows Activation Status", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Windows_Activation_status", + "dParameters": {} + }, + { + "iTaskNum": 11, + "sTaskDescription": "Avigilon Version", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Avigilon_Version", + "dParameters": {} + }, + { + "iTaskNum": 12, + "sTaskDescription": "Get Network Interface Name", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Get_NetworkInterface", + "dParameters": {} + }, + { + "iTaskNum": 13, + "sTaskDescription": "Create NIC team for Cameras", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_NetworkInterface_Team_LACP_Dynamic", + "dParameters": { + "{Team Name}": "", + "{NIC1}": "", + "{NIC2}": "" + } + }, + { + "iTaskNum": 14, + "sTaskDescription": "Create 2 Windows Admins", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Add_Local_2_Admin_Users", + "dParameters": { + "{Local Admin User 1}": "", + "{Password 1}": "", + "{Local Admin User 2}": "", + "{Password 2}": "" + } + }, + { + "iTaskNum": 15, + "sTaskDescription": "IDRAC Assigned IP address", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Assign_IP_Network_Interface", + "dParameters": { + "{IP Address}": "", + "{Network Mask}": "", + "{Gateway}": "" + } + }, + { + "iTaskNum": 16, + "sTaskDescription": "IDRAC Set User Password root, 3,4", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Configure_Users_at_234", + "dParameters": { + "{Password 2 root}": "", + "{Username 3}": "", + "{Password 3}": "", + "{Username 4}": "", + "{Password 4}": "" + } + }, + { + "iTaskNum": 17, + "sTaskDescription": "Firewall", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Firewall Rule", + "dParameters": {} + }, + { + "iTaskNum": 18, + "sTaskDescription": "ACC Antivirus Exclusions", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_ACC8 Antivirus Exclusions", + "dParameters": {} + }, + { + "iTaskNum": 19, + "sTaskDescription": "Folder Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Folder Options", + "dParameters": {} + }, + { + "iTaskNum": 20, + "sTaskDescription": "Power Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Power Options", + "dParameters": {} + }, + { + "iTaskNum": 21, + "sTaskDescription": "Remote Desktop Enable", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Remote Desktop Enable", + "dParameters": {} + }, + { + "iTaskNum": 22, + "sTaskDescription": "Windows Update Restart", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Windows Update Restart", + "dParameters": {} + }, + { + "iTaskNum": 23, + "sTaskDescription": "Show network Interface names, using CMD", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Show_NetworkInterfaces", + "dParameters": {} + }, + { + "iTaskNum": 24, + "sTaskDescription": "Assign an IPv4 address to an interface", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Assign_IPv4Address", + "dParameters": { + "{Name of Interface}": "", + "{IP Address}": "", + "{Net mask}": "", + "{Gateway}": "" + } + }, + { + "iTaskNum": 25, + "sTaskDescription": "Get Service Tag", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Get_ServiceTag", + "dParameters": {} + } +] \ No newline at end of file diff --git a/bin/Debug/tasklist .dat b/bin/Debug/tasklist .dat new file mode 100644 index 0000000..c339d9a Binary files /dev/null and b/bin/Debug/tasklist .dat differ diff --git a/bin/Debug/tasklist.json b/bin/Debug/tasklist.json new file mode 100644 index 0000000..298b0e3 --- /dev/null +++ b/bin/Debug/tasklist.json @@ -0,0 +1,244 @@ +[ + { + "iTaskNum": 1, + "sTaskDescription": "Bios enable Power on AC Recovery", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_ACPwrRcvry_On", + "dParameters": {} + }, + { + "iTaskNum": 2, + "sTaskDescription": "Change HostName", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Change Hostname", + "dParameters": { + "{New Host Name}": "dfghdfhdfgh" + } + }, + { + "iTaskNum": 3, + "sTaskDescription": "Reboot by IDRAC", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Commit_Changes_reboot_NOW", + "dParameters": {} + }, + { + "iTaskNum": 4, + "sTaskDescription": "Server have 2nd power supply?", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_PS_status_dual", + "dParameters": {} + }, + { + "iTaskNum": 5, + "sTaskDescription": "OS", + "sTaskDevice": "", + "bTaskSelect": true, + "sProfile": "CMD_OS_name", + "dParameters": {} + }, + { + "iTaskNum": 6, + "sTaskDescription": "10GB ports", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_networkinterfaces", + "dParameters": {} + }, + { + "iTaskNum": 7, + "sTaskDescription": "GPU", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_VideoController", + "dParameters": {} + }, + { + "iTaskNum": 8, + "sTaskDescription": "Windows Activation Status", + "sTaskDevice": "", + "bTaskSelect": true, + "sProfile": "CMD_Windows_Activation_status", + "dParameters": {} + }, + { + "iTaskNum": 9, + "sTaskDescription": "Get Service Tag", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Get_ServiceTag", + "dParameters": {} + }, + { + "iTaskNum": 10, + "sTaskDescription": "Power redundancy", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Power_redundancy", + "dParameters": {} + }, + { + "iTaskNum": 11, + "sTaskDescription": "Raid volume check", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_storage_vdisks", + "dParameters": {} + }, + { + "iTaskNum": 12, + "sTaskDescription": "Avigilon Version", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Avigilon_Version", + "dParameters": {} + }, + { + "iTaskNum": 13, + "sTaskDescription": "Get Network Interface Name", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Get_NetworkInterface", + "dParameters": {} + }, + { + "iTaskNum": 14, + "sTaskDescription": "Create NIC team for Cameras", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_NetworkInterface_Team_LACP_Dynamic", + "dParameters": { + "{Team Name}": "fgdhdf", + "{NIC1}": "dfghdfgh", + "{NIC2}": "fdghfdgh" + } + }, + { + "iTaskNum": 15, + "sTaskDescription": "Create 2 Windows Admins", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Add_Local_2_Admin_Users", + "dParameters": { + "{Local Admin User 1}": "", + "{Password 1}": "", + "{Local Admin User 2}": "", + "{Password 2}": "" + } + }, + { + "iTaskNum": 16, + "sTaskDescription": "IDRAC Assigned IP address", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Assign_IP_Network_Interface", + "dParameters": { + "{IP Address}": "", + "{Network Mask}": "", + "{Gateway}": "" + } + }, + { + "iTaskNum": 17, + "sTaskDescription": "IDRAC Set User Password root, 3,4", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Configure_Users_at_234", + "dParameters": { + "{Password 2 root}": "", + "{Username 3}": "", + "{Password 3}": "", + "{Username 4}": "", + "{Password 4}": "" + } + }, + { + "iTaskNum": 18, + "sTaskDescription": "Firewall", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Firewall Rule", + "dParameters": {} + }, + { + "iTaskNum": 19, + "sTaskDescription": "ACC Antivirus Exclusions", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_ACC8 Antivirus Exclusions", + "dParameters": {} + }, + { + "iTaskNum": 20, + "sTaskDescription": "Folder Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Folder Options", + "dParameters": {} + }, + { + "iTaskNum": 21, + "sTaskDescription": "Power Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Power Options", + "dParameters": {} + }, + { + "iTaskNum": 22, + "sTaskDescription": "Show network Interface names, using CMD", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Show_NetworkInterfaces", + "dParameters": {} + }, + { + "iTaskNum": 23, + "sTaskDescription": "Remote Desktop Enable", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Remote Desktop Enable", + "dParameters": {} + }, + { + "iTaskNum": 24, + "sTaskDescription": "Windows Update Restart", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Windows Update Restart", + "dParameters": {} + }, + { + "iTaskNum": 25, + "sTaskDescription": "IPv06 disable All", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Ipv6_Disable_ALL", + "dParameters": {} + }, + { + "iTaskNum": 26, + "sTaskDescription": "Screen Saver for USI-Admin", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_ScreenSaver", + "dParameters": {} + }, + { + "iTaskNum": 27, + "sTaskDescription": "hgkghk", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Assign_IPv4Address", + "dParameters": { + "{Name of Interface}": "", + "{IP Address}": "", + "{PrefixLength}": "", + "{Gateway}": "" + } + } +] \ No newline at end of file diff --git a/delete256.ico b/delete256.ico new file mode 100644 index 0000000..9674fb9 Binary files /dev/null and b/delete256.ico differ diff --git a/main256.ico b/main256.ico new file mode 100644 index 0000000..07b443c Binary files /dev/null and b/main256.ico differ diff --git a/main256.png b/main256.png new file mode 100644 index 0000000..c3732d1 Binary files /dev/null and b/main256.png differ diff --git a/main256.svg b/main256.svg new file mode 100644 index 0000000..3e30ed4 --- /dev/null +++ b/main256.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + USI + + diff --git a/profile.json b/profile.json new file mode 100644 index 0000000..ac5b1b2 --- /dev/null +++ b/profile.json @@ -0,0 +1,486 @@ +[ + { + "ProfileName": "Do nothing", + "ProfileType": "CMD", + "ProfileCommands": ["Do nothing" + ], + "ProfileParameters": [ + "{P00}", + "{P01}", + "{P02}", + "{P03}" + ] + }, + { + "ProfileName": "Test", + "ProfileType": "CMD", + "ProfileCommands": [ + "command 1 {P00} {P01} {P02}", + "command 2 {P00} {P01}", + "command 3 {P00} {P03}" + ], + "ProfileParameters": [ + "{P00}", + "{P01}", + "{P02}", + "{P03}" + ] + }, + { + "ProfileName": "Change Hostname", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Rename-Computer -NewName {New Host Name} -Force -PassThru", + "hostname" + ], + "ProfileParameters": [ + "{New Host Name}" + ] + }, + + { + "ProfileName": "CMD_Show_NetworkInterfaces", + "ProfileType": "CMD", + "ProfileCommands": [ + "netsh interface show interface" + ], + "ProfileParameters": [ + ] + }, + + { + "ProfileName": "CMD_Assign_IPv4Address", + "ProfileType": "CMD", + "ProfileCommands": [ + "netsh interface ipv4 set address name=\"{Name of Interface}\" source=static addr={IP Address} mask={Net mask} gateway={Gateway}", + "netsh interface set interface \"{Name of Interface}\" admin=disable", + "netsh interface set interface \"{Name of Interface}\" admin=enable", + "netsh interface ipv4 show config name=\"{Name of Interface}\" " + ], + "ProfileParameters": [ + "{Name of Interface}", + "{IP Address}", + "{Net mask}", + "{Gateway}" + ] + }, + + { + "ProfileName": "Powershell_Assign_IPv4Address", + "ProfileType": "Powershell", + "ProfileCommands": [ + "New-NetIPAddress -InterfaceAlias \"{Name of Interface}\" -IPAddress {IP Address} -PrefixLength {PrefixLength} -DefaultGateway {Gateway}", + "Get-NetIPAddress -InterfaceAlias \"{Name of Interface}\"" + ], + "ProfileParameters": [ + "{Name of Interface}", + "{IP Address}", + "{PrefixLength}", + "{Gateway}" + ] + }, + { + "ProfileName": "SSH_Cisco_Tftp_Running", + "ProfileType": "SSH", + "ProfileCommands": [ + "copy run tftp://" + ], + "ProfileParameters": [ + "{IP Address}", + "{User Name}", + "{Password}" + ] + }, + { + "ProfileName": "SSH_Cisco_Catalyst_Tftp_Running", + "ProfileType": "SSH_Catalyst", + "ProfileCommands": [ + "copy running-config tftp://" + ], + "ProfileParameters": [ + "{IP Address}", + "{User Name}", + "{Password}" + ] + }, + { + "ProfileName": "SSH_Cisco_Tftp_Startup", + "ProfileType": "SSH", + "ProfileCommands": [ + "copy startup-config tftp://" + ], + "ProfileParameters": [ + "{IP Address}", + "{User Name}", + "{Password}" + ] + }, + { + "ProfileName": "SSH_Cisco_Catalyst_Tftp_Startup", + "ProfileType": "SSH_Catalyst", + "ProfileCommands": [ + "copy startup-config tftp://" + ], + "ProfileParameters": [ + "{IP Address}", + "{User Name}", + "{Password}" + ] + }, + { + "ProfileName": "RAC9_PS_status_dual", + "ProfileType": "RAC9", + "ProfileCommands": [ + "get system.power.supply.1", + "get system.power.supply.2" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_storage_pdisks", + "ProfileType": "RAC9", + "ProfileCommands": [ + "storage get get pdisks -o" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_networkinterfaces", + "ProfileType": "RAC9", + "ProfileCommands": [ + "gethostnetworkinterfaces" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_OS_name", + "ProfileType": "CMD", + "ProfileCommands": [ + "systeminfo | findstr /B /C:\"OS Name\" /B /C:\"OS Version\"" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_Windows_Activation_status", + "ProfileType": "CMD", + "ProfileCommands": [ + "cscript c:\\Windows\\System32\\slmgr.vbs /dlv" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "CMD_Windows_Enable_RemoteDesktop", + "ProfileType": "CMD", + "ProfileCommands": [ + "REG ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f", + "netsh advfirewall firewall add rule name=\"Remote Desktop (TCP-In)\" dir=in action=allow protocol=TCP localport=3389", + "net start TermService" + ], + "ProfileParameters": [] + }, + + + { + "ProfileName": "CMD_Avigilon_Version", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Get-WmiObject -Class Win32_Product | where vendor -eq Avigilon | select Name, Version" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_VideoController", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Get-CimInstance -ClassName Win32_VideoController" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_Avigilon_Servername", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Avigilon_Servername.ps1\"" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_Get_NetworkInterface", + "ProfileType": "Powershell", + "ProfileCommands": [ + "Get-NetAdapter | Select-Object Name, MacAddress, InterfaceDescription| Sort-Object -Property Name" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "Powershell_NetworkInterface_Team_LACP_Dynamic", + "ProfileType": "Powershell", + "ProfileCommands": [ + "New-NetLbfoTeam -Name \"{Team Name}\" -TeamMembers \"{NIC1}\", \"{NIC2}\" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic -Confirm:$false" + ], + "ProfileParameters": [ + "{Team Name}", + "{NIC1}", + "{NIC2}" + ] + }, + + { + "ProfileName": "Powershell_ACC8 Antivirus Exclusions", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"ACC8 Antivirus Exclusions.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "Powershell_Firewall Rule", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Firewall Rule.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "Powershell_Folder Options", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Folder Options.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "Powershell_Power Options", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Power Options.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "Powershell_Remote Desktop Enable", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Remote Desktop Enable.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "Powershell_Windows Update Restart", + "ProfileType": "Powershell", + "ProfileCommands": [ + "-File \"Windows Update Restart.ps1\"" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "CMD_Add_Local_Admin_User", + "ProfileType": "CMD", + "ProfileCommands": [ + "Net user {Local Admin User 1} {Password 1} /add /Y", + "net localgroup administrators {Local Admin User 1} /add ", + "net localgroup administrators" + ], + "ProfileParameters": [ + "{Local Admin User 1}", + "{Password 1}" + + ] + }, + + { + "ProfileName": "CMD_Add_Local_2_Admin_Users", + "ProfileType": "CMD", + "ProfileCommands": [ + "Net user {Local Admin User 1} {Password 1} /add /Y", + "net localgroup administrators {Local Admin User 1} /add ", + "Net user {Local Admin User 2} {Password 2} /add /Y", + "net localgroup administrators {Local Admin User 2} /add ", + "net localgroup administrators" + ], + "ProfileParameters": [ + "{Local Admin User 1}", + "{Password 1}", + "{Local Admin User 2}", + "{Password 2}" + + ] + }, + + { + "ProfileName": "CMD_ScreenSaver", + "ProfileType": "CMD", + "ProfileCommands": [ + "cd C:\\USI\\Images\\ & C:\\USI\\Images\\bg.bat" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "CMD_Install_FoxitReader", + "ProfileType": "CMD", + "ProfileCommands": [ + "C:\\USI\\Apps\\FoxitPDFReader.exe /QUIET" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "CMD_Timezone_CanCentralStandardTime_6", + "ProfileType": "CMD", + "ProfileCommands": [ + "tzutil /s \"Central Standard Time\"", + "tzutil /g" + ], + "ProfileParameters": [] + }, + + + { + "ProfileName": "CMD_Meinberg ntp-4.2.8", + "ProfileType": "CMD", + "ProfileCommands": [ + "C:\\USI\\Apps\\\"Meinberg ntp-4.2.8p15a-win32-setup.exe\" /USE_FILE=\"C:\\USI\\Apps\\MeinbergSetup.ini\"", + "ntpd --version", + "echo server {IP Address 1} iburst minpoll 6 maxpoll 7 >> C:\\\"Program Files (x86)\"\\NTP\\etc\\ntp.conf", + "echo server {IP Address 2} iburst minpoll 6 maxpoll 7 >> C:\\\"Program Files (x86)\"\\NTP\\etc\\ntp.conf" + + ], + "ProfileParameters": [ + "{IP Address 1}", + "{IP Address 2}" + ] + }, + + { + "ProfileName": "CMD_Ipv6_Disable_ALL", + "ProfileType": "CMD", + "ProfileCommands": [ + "powershell \"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6\"", + "powershell \"Get-NetAdapterBinding -ComponentID ms_tcpip6| Sort-Object -Property Name\"" + + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "CMD_Ipv6_Disable_Interface", + "ProfileType": "CMD", + "ProfileCommands": [ + "powershell \"Disable-NetAdapterBinding -Name \"{Interface Name}\" -ComponentID ms_tcpip6\"", + "powershell \"Get-NetAdapterBinding -ComponentID ms_tcpip6| Sort-Object -Property Name\"" + ], + "ProfileParameters": [ + "{Interface Name}" + ] + }, + + { + "ProfileName": "RAC9_IDRAC_Assign_IP_Network_Interface", + "ProfileType": "CMD", + "ProfileCommands": [ + "racadm setniccfg -s {IP Address} {Network Mask} {Gateway}" + ], + "ProfileParameters": [ "{IP Address}", "{Network Mask}", "{Gateway}" ] + }, + + { + "ProfileName": "RAC9_IDRAC_Configure_User", + "ProfileType": "CMD", + "ProfileCommands": [ + "racadm set iDRAC.Users.{Index}.Username {Username}", + "racadm set iDRAC.Users.{Index}.Password {Password}", + "racadm get iDRAC.Users.{Index}.Username" + ], + "ProfileParameters": [ "{Index}", "{Username}", "{Password}" ] + }, + + { + "ProfileName": "RAC9_IDRAC_Configure_Users_at_234", + "ProfileType": "CMD", + "ProfileCommands": [ + "racadm set iDRAC.Users.2.Password {Password 2 root}", + "racadm set iDRAC.Users.3.Username {Username 3}", + "racadm set iDRAC.Users.3.Password {Password 3}", + "racadm set iDRAC.Users.4.Username {Username 4}", + "racadm set iDRAC.Users.4.Password {Password 4}", + "racadm get iDRAC.Users.2.Username", + "racadm get iDRAC.Users.3.Username", + "racadm get iDRAC.Users.4.Username" + ], + "ProfileParameters": [ + "{Password 2 root}", + "{Username 3}", + "{Password 3}", + "{Username 4}", + "{Password 4}" + ] + }, + + { + "ProfileName": "RAC9_IDRAC_Get_ServiceTag", + "ProfileType": "CMD", + "ProfileCommands": [ + "racadm getsvctag" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_ACPwrRcvry_On", + "ProfileType": "RAC9", + "ProfileCommands": [ + "set bios.Syssecurity.ACPwrRcvry On" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_Power_redundancy", + "ProfileType": "RAC9", + "ProfileCommands": [ + " get system.power.RedundancyPolicy" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_storage_vdisks", + "ProfileType": "RAC9", + "ProfileCommands": [ + "storage get vdisks -o -p layout,status,size" + ], + "ProfileParameters": [] + }, + + { + "ProfileName": "RAC9_Commit_Changes_reboot_NOW", + "ProfileType": "RAC9", + "ProfileCommands": [ + "jobqueue create BIOS.Setup.1-1 -r pwrcycle -s TIME_NOW" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_Jobview_checkresult", + "ProfileType": "RAC9", + "ProfileCommands": [ + "jobqueue view" + ], + "ProfileParameters": [] + }, + { + "ProfileName": "RAC9_Reboot", + "ProfileType": "RAC9", + "ProfileCommands": [ + "serveraction hardreset" + ], + "ProfileParameters": [] + } +] \ No newline at end of file diff --git a/tasklist.json b/tasklist.json new file mode 100644 index 0000000..298b0e3 --- /dev/null +++ b/tasklist.json @@ -0,0 +1,244 @@ +[ + { + "iTaskNum": 1, + "sTaskDescription": "Bios enable Power on AC Recovery", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_ACPwrRcvry_On", + "dParameters": {} + }, + { + "iTaskNum": 2, + "sTaskDescription": "Change HostName", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Change Hostname", + "dParameters": { + "{New Host Name}": "dfghdfhdfgh" + } + }, + { + "iTaskNum": 3, + "sTaskDescription": "Reboot by IDRAC", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Commit_Changes_reboot_NOW", + "dParameters": {} + }, + { + "iTaskNum": 4, + "sTaskDescription": "Server have 2nd power supply?", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_PS_status_dual", + "dParameters": {} + }, + { + "iTaskNum": 5, + "sTaskDescription": "OS", + "sTaskDevice": "", + "bTaskSelect": true, + "sProfile": "CMD_OS_name", + "dParameters": {} + }, + { + "iTaskNum": 6, + "sTaskDescription": "10GB ports", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_networkinterfaces", + "dParameters": {} + }, + { + "iTaskNum": 7, + "sTaskDescription": "GPU", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_VideoController", + "dParameters": {} + }, + { + "iTaskNum": 8, + "sTaskDescription": "Windows Activation Status", + "sTaskDevice": "", + "bTaskSelect": true, + "sProfile": "CMD_Windows_Activation_status", + "dParameters": {} + }, + { + "iTaskNum": 9, + "sTaskDescription": "Get Service Tag", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Get_ServiceTag", + "dParameters": {} + }, + { + "iTaskNum": 10, + "sTaskDescription": "Power redundancy", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_Power_redundancy", + "dParameters": {} + }, + { + "iTaskNum": 11, + "sTaskDescription": "Raid volume check", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_storage_vdisks", + "dParameters": {} + }, + { + "iTaskNum": 12, + "sTaskDescription": "Avigilon Version", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Avigilon_Version", + "dParameters": {} + }, + { + "iTaskNum": 13, + "sTaskDescription": "Get Network Interface Name", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Get_NetworkInterface", + "dParameters": {} + }, + { + "iTaskNum": 14, + "sTaskDescription": "Create NIC team for Cameras", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_NetworkInterface_Team_LACP_Dynamic", + "dParameters": { + "{Team Name}": "fgdhdf", + "{NIC1}": "dfghdfgh", + "{NIC2}": "fdghfdgh" + } + }, + { + "iTaskNum": 15, + "sTaskDescription": "Create 2 Windows Admins", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Add_Local_2_Admin_Users", + "dParameters": { + "{Local Admin User 1}": "", + "{Password 1}": "", + "{Local Admin User 2}": "", + "{Password 2}": "" + } + }, + { + "iTaskNum": 16, + "sTaskDescription": "IDRAC Assigned IP address", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Assign_IP_Network_Interface", + "dParameters": { + "{IP Address}": "", + "{Network Mask}": "", + "{Gateway}": "" + } + }, + { + "iTaskNum": 17, + "sTaskDescription": "IDRAC Set User Password root, 3,4", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "RAC9_IDRAC_Configure_Users_at_234", + "dParameters": { + "{Password 2 root}": "", + "{Username 3}": "", + "{Password 3}": "", + "{Username 4}": "", + "{Password 4}": "" + } + }, + { + "iTaskNum": 18, + "sTaskDescription": "Firewall", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Firewall Rule", + "dParameters": {} + }, + { + "iTaskNum": 19, + "sTaskDescription": "ACC Antivirus Exclusions", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_ACC8 Antivirus Exclusions", + "dParameters": {} + }, + { + "iTaskNum": 20, + "sTaskDescription": "Folder Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Folder Options", + "dParameters": {} + }, + { + "iTaskNum": 21, + "sTaskDescription": "Power Options", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Power Options", + "dParameters": {} + }, + { + "iTaskNum": 22, + "sTaskDescription": "Show network Interface names, using CMD", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Show_NetworkInterfaces", + "dParameters": {} + }, + { + "iTaskNum": 23, + "sTaskDescription": "Remote Desktop Enable", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Remote Desktop Enable", + "dParameters": {} + }, + { + "iTaskNum": 24, + "sTaskDescription": "Windows Update Restart", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Windows Update Restart", + "dParameters": {} + }, + { + "iTaskNum": 25, + "sTaskDescription": "IPv06 disable All", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_Ipv6_Disable_ALL", + "dParameters": {} + }, + { + "iTaskNum": 26, + "sTaskDescription": "Screen Saver for USI-Admin", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "CMD_ScreenSaver", + "dParameters": {} + }, + { + "iTaskNum": 27, + "sTaskDescription": "hgkghk", + "sTaskDevice": "", + "bTaskSelect": false, + "sProfile": "Powershell_Assign_IPv4Address", + "dParameters": { + "{Name of Interface}": "", + "{IP Address}": "", + "{PrefixLength}": "", + "{Gateway}": "" + } + } +] \ No newline at end of file