Update
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
## 02-03-2025
|
||||||
|
* Refactor: Изменены области видимости методов
|
||||||
|
* Refactor: Переписано основное меню
|
||||||
|
* Refactor: Обновлен settings.json
|
||||||
|
* Feat: Добавлен новый пакет: Spectre.Console
|
||||||
|
* Feat: Добавлено отображение текущей функции при переходе
|
||||||
|
|
||||||
## 18-02-2025
|
## 18-02-2025
|
||||||
* Refactor: Обновлен settings.json
|
* Refactor: Обновлен settings.json
|
||||||
* Feat: массовая перезагрузка ПК посредством запуска программы с определенным параметром (остался вопрос с работой с авторизацией)
|
* Feat: массовая перезагрузка ПК посредством запуска программы с определенным параметром (остался вопрос с работой с авторизацией)
|
||||||
|
|||||||
171
Program.cs
171
Program.cs
@@ -1,5 +1,6 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Renci.SshNet;
|
using Renci.SshNet;
|
||||||
|
using Spectre.Console;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@@ -19,32 +20,32 @@ namespace domain_utility
|
|||||||
{
|
{
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
private static readonly string regularDateTime = @"(\d+[.]\d+[.]\d+[ ]\d+[:]\d+[:]\d+)";
|
static readonly string regularDateTime = @"(\d+[.]\d+[.]\d+[ ]\d+[:]\d+[:]\d+)";
|
||||||
|
|
||||||
private static readonly string[,] stringsToFind = new string[,] {
|
static readonly string[,] stringsToFind = new string[,] {
|
||||||
{ "Учетная запись активна", @"(Yes|No)", "Учетная запись работает: " },
|
{ "Учетная запись активна", @"(Yes|No)", "Учетная запись работает: " },
|
||||||
{ "Последний пароль задан", regularDateTime, "Когда был сменен пароль: " },
|
{ "Последний пароль задан", regularDateTime, "Когда был сменен пароль: " },
|
||||||
{ "Действие пароля завершается", regularDateTime, "Когда нужно менять пароль (крайний срок): "},
|
{ "Действие пароля завершается", regularDateTime, "Когда нужно менять пароль (крайний срок): "},
|
||||||
{ "Членство в глобальных группах", @"([*].+)", "Член групп:\t" }
|
{ "Членство в глобальных группах", @"([*].+)", "Член групп:\t" }
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly string[,] computerNameRegex = new string[,] {
|
static readonly string[,] computerNameRegex = new string[,] {
|
||||||
{ "^[a-zA-Z]+\\d+$", "R54-630300" }, // THE01
|
{ "^[a-zA-Z]+\\d+$", "R54-630300" }, // THE01
|
||||||
{ "^\\d{6,}[a-zA-Z]+\\d+$", "R54-" }, // 630300THE01
|
{ "^\\d{6,}[a-zA-Z]+\\d+$", "R54-" }, // 630300THE01
|
||||||
{ "^[rR]\\d{2,}[-]\\d{6,}[a-zA-Z]+\\d+$", "" } // R54-630300THE01
|
{ "^[rR]\\d{2,}[-]\\d{6,}[a-zA-Z]+\\d+$", "" } // R54-630300THE01
|
||||||
};
|
};
|
||||||
|
|
||||||
private static string domain_user = string.Empty;
|
static string domain_user = string.Empty;
|
||||||
private static string domain_password = string.Empty;
|
static string domain_password = string.Empty;
|
||||||
|
|
||||||
private static bool _click_cancel = false;
|
static bool _click_cancel = false;
|
||||||
|
|
||||||
private static bool IsStringContainIp(string ip)
|
static bool IsStringContainIp(string ip)
|
||||||
{
|
{
|
||||||
return Regex.Match(ip, @"^(\d+[.]\d+[.]\d+[.]\d+)$").Success;
|
return Regex.Match(ip, @"^(\d+[.]\d+[.]\d+[.]\d+)$").Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string CheckComputerName(string pcName)
|
static string CheckComputerName(string pcName)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < computerNameRegex.GetLength(0); i++)
|
for (int i = 0; i < computerNameRegex.GetLength(0); i++)
|
||||||
if (Regex.Match(pcName, computerNameRegex[i, 0]).Success)
|
if (Regex.Match(pcName, computerNameRegex[i, 0]).Success)
|
||||||
@@ -52,7 +53,7 @@ namespace domain_utility
|
|||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string InputData(string message, Action callback, bool withClear = true, bool withChecks = true)
|
static string InputData(string message, Action callback, bool withClear = true, bool withChecks = true)
|
||||||
{
|
{
|
||||||
if (withClear)
|
if (withClear)
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
@@ -76,7 +77,7 @@ namespace domain_utility
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void BackToMenu(Action callback, bool withMessage = true)
|
static void BackToMenu(Action callback, bool withMessage = true)
|
||||||
{
|
{
|
||||||
if (withMessage)
|
if (withMessage)
|
||||||
Console.WriteLine("\nНажмите Enter чтобы продолжить, ESC чтобы вернуться на главную.");
|
Console.WriteLine("\nНажмите Enter чтобы продолжить, ESC чтобы вернуться на главную.");
|
||||||
@@ -92,7 +93,7 @@ namespace domain_utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void InputDomainCredentials()
|
static void InputDomainCredentials()
|
||||||
{
|
{
|
||||||
if (domain_user == string.Empty)
|
if (domain_user == string.Empty)
|
||||||
{
|
{
|
||||||
@@ -127,7 +128,7 @@ namespace domain_utility
|
|||||||
domain_password = password;
|
domain_password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ExecuteCommandViaSSH(string remote, string commandToExecute)
|
static void ExecuteCommandViaSSH(string remote, string commandToExecute)
|
||||||
{
|
{
|
||||||
InputDomainCredentials();
|
InputDomainCredentials();
|
||||||
try
|
try
|
||||||
@@ -146,7 +147,7 @@ namespace domain_utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ResetAdminPassword()
|
static void ResetAdminPassword()
|
||||||
{
|
{
|
||||||
string machineNameAndUser = WindowsIdentity.GetCurrent().Name.ToString();
|
string machineNameAndUser = WindowsIdentity.GetCurrent().Name.ToString();
|
||||||
string machineName = machineNameAndUser.Substring(0, machineNameAndUser.IndexOf('\\'));
|
string machineName = machineNameAndUser.Substring(0, machineNameAndUser.IndexOf('\\'));
|
||||||
@@ -163,7 +164,7 @@ namespace domain_utility
|
|||||||
BackToMenu(Menu);
|
BackToMenu(Menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string PingHost(string host)
|
static string PingHost(string host)
|
||||||
{
|
{
|
||||||
string returnMessage = string.Empty;
|
string returnMessage = string.Empty;
|
||||||
PingOptions pingOptions = new PingOptions() { DontFragment = true }; // TTL = 128
|
PingOptions pingOptions = new PingOptions() { DontFragment = true }; // TTL = 128
|
||||||
@@ -211,15 +212,15 @@ namespace domain_utility
|
|||||||
return returnMessage;
|
return returnMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void PingClickCancel(object sender, ConsoleCancelEventArgs e)
|
static void PingClickCancel(object sender, ConsoleCancelEventArgs e)
|
||||||
{
|
{
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
_click_cancel = true;
|
_click_cancel = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StartPing()
|
static void StartPing()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("ping компьютера\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
StartPing);
|
StartPing);
|
||||||
|
|
||||||
Console.WriteLine("Нажмите Ctrl + C чтобы остановить\n");
|
Console.WriteLine("Нажмите Ctrl + C чтобы остановить\n");
|
||||||
@@ -255,9 +256,9 @@ namespace domain_utility
|
|||||||
BackToMenu(StartPing);
|
BackToMenu(StartPing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StartRDPConnection()
|
static void StartRDPConnection()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("удаленный доступ к компьютеру\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
StartRDPConnection);
|
StartRDPConnection);
|
||||||
|
|
||||||
remote = $"/v:{remote} /f";
|
remote = $"/v:{remote} /f";
|
||||||
@@ -270,9 +271,9 @@ namespace domain_utility
|
|||||||
BackToMenu(StartRDPConnection);
|
BackToMenu(StartRDPConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ShowDomainUserInfo()
|
static void ShowDomainUserInfo()
|
||||||
{
|
{
|
||||||
string username = InputData("\nВведите имя пользователя (пр. 'lev.rusanov'): ", ShowDomainUserInfo, withChecks: false);
|
string username = InputData("посмотреть информацию о пользователе\n\nВведите имя пользователя (пр. 'lev.rusanov'): ", ShowDomainUserInfo, withChecks: false);
|
||||||
|
|
||||||
username = $"user {username} /domain";
|
username = $"user {username} /domain";
|
||||||
|
|
||||||
@@ -321,9 +322,9 @@ namespace domain_utility
|
|||||||
BackToMenu(ShowDomainUserInfo);
|
BackToMenu(ShowDomainUserInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ShowComputerBootupTime()
|
static void ShowComputerBootupTime()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("посмотреть дату последней загрузки компьютера\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
ShowComputerBootupTime);
|
ShowComputerBootupTime);
|
||||||
|
|
||||||
ManagementScope scope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", remote));
|
ManagementScope scope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", remote));
|
||||||
@@ -345,9 +346,9 @@ namespace domain_utility
|
|||||||
BackToMenu(ShowComputerBootupTime);
|
BackToMenu(ShowComputerBootupTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void RemoteRebootWindows()
|
static void RemoteRebootWindows()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("удаленная перезагрузка компьютера\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
RemoteRebootWindows);
|
RemoteRebootWindows);
|
||||||
|
|
||||||
remote = $"/m \\\\{remote} /r /f /t 180 /c \"Через 3 минуты будет произведена перезагрузка ПК!\"";
|
remote = $"/m \\\\{remote} /r /f /t 180 /c \"Через 3 минуты будет произведена перезагрузка ПК!\"";
|
||||||
@@ -360,9 +361,9 @@ namespace domain_utility
|
|||||||
BackToMenu(RemoteRebootWindows);
|
BackToMenu(RemoteRebootWindows);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OpenComputerCups()
|
static void OpenComputerCups()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("открыть CUPS выбранного компьютера (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
OpenComputerCups);
|
OpenComputerCups);
|
||||||
|
|
||||||
Process.Start($"https://{remote}:631/printers");
|
Process.Start($"https://{remote}:631/printers");
|
||||||
@@ -372,9 +373,9 @@ namespace domain_utility
|
|||||||
BackToMenu(OpenComputerCups);
|
BackToMenu(OpenComputerCups);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ExecuteCustomCommandViaSSH()
|
static void ExecuteCustomCommandViaSSH()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("выполнить команду через SSH (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
ExecuteCustomCommandViaSSH);
|
ExecuteCustomCommandViaSSH);
|
||||||
|
|
||||||
string commandToExecute = InputData("Введите команду для выполнения:", ExecuteCustomCommandViaSSH, withClear: false, withChecks: false);
|
string commandToExecute = InputData("Введите команду для выполнения:", ExecuteCustomCommandViaSSH, withClear: false, withChecks: false);
|
||||||
@@ -386,9 +387,9 @@ namespace domain_utility
|
|||||||
BackToMenu(ExecuteCustomCommandViaSSH);
|
BackToMenu(ExecuteCustomCommandViaSSH);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void FixConky()
|
static void FixConky()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("изменить время обновления conky с 0.5 на 300 (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
FixConky);
|
FixConky);
|
||||||
|
|
||||||
ExecuteCommandViaSSH(remote, "sudo sed -i 's/update_interval = 0.5,/update_interval = 300,/' /etc/conky/conky.conf");
|
ExecuteCommandViaSSH(remote, "sudo sed -i 's/update_interval = 0.5,/update_interval = 300,/' /etc/conky/conky.conf");
|
||||||
@@ -398,9 +399,9 @@ namespace domain_utility
|
|||||||
BackToMenu(FixConky);
|
BackToMenu(FixConky);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void RemoteRebootLinux()
|
static void RemoteRebootLinux()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("удаленная перезагрузка компьютера (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
RemoteRebootLinux);
|
RemoteRebootLinux);
|
||||||
|
|
||||||
ExecuteCommandViaSSH(remote, "sudo shutdown -r +3 \"Через 3 минуты будет произведена перезагрузка ПК!\"");
|
ExecuteCommandViaSSH(remote, "sudo shutdown -r +3 \"Через 3 минуты будет произведена перезагрузка ПК!\"");
|
||||||
@@ -410,9 +411,9 @@ namespace domain_utility
|
|||||||
BackToMenu(RemoteRebootLinux);
|
BackToMenu(RemoteRebootLinux);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ShowLinuxComputerBootupTime()
|
static void ShowLinuxComputerBootupTime()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("посмотреть время работы компьютера (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
ShowLinuxComputerBootupTime);
|
ShowLinuxComputerBootupTime);
|
||||||
|
|
||||||
ExecuteCommandViaSSH(remote, "uptime");
|
ExecuteCommandViaSSH(remote, "uptime");
|
||||||
@@ -420,9 +421,9 @@ namespace domain_utility
|
|||||||
BackToMenu(ShowLinuxComputerBootupTime);
|
BackToMenu(ShowLinuxComputerBootupTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ChangeRemote802Password()
|
static void ChangeRemote802Password()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04')\nall - для массового изменения",
|
string remote = InputData("сменить пароль для 802.1x (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04')\nall - для массового изменения",
|
||||||
ChangeRemote802Password, withChecks: false);
|
ChangeRemote802Password, withChecks: false);
|
||||||
remote = remote.Trim().ToLower();
|
remote = remote.Trim().ToLower();
|
||||||
if (remote != "all")
|
if (remote != "all")
|
||||||
@@ -478,9 +479,9 @@ namespace domain_utility
|
|||||||
BackToMenu(ChangeRemote802Password);
|
BackToMenu(ChangeRemote802Password);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DisableKdeWallet()
|
static void DisableKdeWallet()
|
||||||
{
|
{
|
||||||
string remote = InputData("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
string remote = InputData("отключить KDE кошелек (Linux)\n\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'):",
|
||||||
DisableKdeWallet);
|
DisableKdeWallet);
|
||||||
|
|
||||||
ExecuteCommandViaSSH(remote, "sudo sed -i 's/^Exec=/#Exec=/' /usr/share/dbus-1/services/org.kde.kwalletd5.service");
|
ExecuteCommandViaSSH(remote, "sudo sed -i 's/^Exec=/#Exec=/' /usr/share/dbus-1/services/org.kde.kwalletd5.service");
|
||||||
@@ -490,69 +491,57 @@ namespace domain_utility
|
|||||||
BackToMenu(DisableKdeWallet);
|
BackToMenu(DisableKdeWallet);
|
||||||
}
|
}
|
||||||
|
|
||||||
static readonly string[] menuList = {
|
private class MenuClass
|
||||||
//"630300 - сброс пароля локального администратора (только Windows)", // ResetAdminPassword
|
{
|
||||||
"Выберите действие:",
|
public string Name { get; }
|
||||||
"1 - ping компьютера", // StartPing
|
public Action Executor { get; }
|
||||||
"2 - удаленно подключиться к компьютеру", // StartRDPConnection
|
|
||||||
"\nWindows:",
|
public MenuClass(string _name, Action _executor)
|
||||||
"3 - посмотреть информацию о пользователе", // ShowDomainUserInfo
|
{
|
||||||
"4 - посмотреть дату последней загрузки компьютера", // ShowComputerBootupTime
|
Name = _name;
|
||||||
"5 - удаленная перезагрузка компьютера", // RemoteRebootWindows
|
Executor = _executor;
|
||||||
"\nLinux:",
|
}
|
||||||
"6 - открыть CUPS выбранного компьютера", // OpenComputerCups
|
}
|
||||||
"7 - выполнить команду через SSH", // ExecuteCustomCommandViaSSH
|
|
||||||
"8 - изменить время обновления conky с 0.5 на 300", // FixConky
|
static readonly MenuClass[] availableOptions = new[]
|
||||||
"9 - удаленная перезагрузка компьютера", // RemoteRebootLinux
|
{
|
||||||
"10 - посмотреть время работы компьютера", // ShowLinuxComputerBootupTime
|
new MenuClass("ping компьютера", () => StartPing()),
|
||||||
"11 - сменить пароль для 802.1x", // ChangeRemote802Password
|
new MenuClass("удаленный доступ к компьютеру", () => StartRDPConnection()),
|
||||||
"12 - отключить KDE кошелек", // DisableKdeWallet
|
new MenuClass("посмотреть информацию о пользователе", () => ShowDomainUserInfo()),
|
||||||
|
new MenuClass("посмотреть дату последней загрузки компьютера", () => ShowComputerBootupTime()),
|
||||||
|
new MenuClass("удаленная перезагрузка компьютера", () => RemoteRebootWindows()),
|
||||||
|
new MenuClass("открыть CUPS выбранного компьютера (Linux)", () => OpenComputerCups()),
|
||||||
|
new MenuClass("выполнить команду через SSH (Linux)", () => ExecuteCustomCommandViaSSH()),
|
||||||
|
new MenuClass("изменить время обновления conky с 0.5 на 300 (Linux)", () => FixConky()),
|
||||||
|
new MenuClass("удаленная перезагрузка компьютера (Linux)", () => RemoteRebootLinux()),
|
||||||
|
new MenuClass("посмотреть время работы компьютера (Linux)", () => ShowLinuxComputerBootupTime()),
|
||||||
|
new MenuClass("сменить пароль для 802.1x (Linux)", () => ChangeRemote802Password()),
|
||||||
|
new MenuClass("отключить KDE кошелек (Linux)", () => DisableKdeWallet()),
|
||||||
};
|
};
|
||||||
|
|
||||||
private static void Menu()
|
static void Menu()
|
||||||
{
|
{
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
foreach (string item in menuList) // for (int i = 0; i < menuList.Length; i++)
|
var choice = AnsiConsole.Prompt(
|
||||||
Console.WriteLine(item); // Console.WriteLine(menuList[i]);
|
new SelectionPrompt<MenuClass>()
|
||||||
int choice;
|
.Title("Выберите действие:")
|
||||||
Console.Write("\n> ");
|
.PageSize(15)
|
||||||
while (!int.TryParse(Console.ReadLine(), out choice))
|
//.MoreChoicesText("[grey](Move up and down to reveal more fruits)[/]")
|
||||||
{
|
.UseConverter(i => i.Name)
|
||||||
Console.WriteLine("Введите цифру!");
|
.AddChoices(availableOptions)
|
||||||
Console.Write("> ");
|
);
|
||||||
}
|
choice.Executor();
|
||||||
switch (choice)
|
|
||||||
{
|
|
||||||
case 1: StartPing(); break;
|
|
||||||
case 2: StartRDPConnection(); break;
|
|
||||||
case 3: ShowDomainUserInfo(); break;
|
|
||||||
case 4: ShowComputerBootupTime(); break;
|
|
||||||
case 5: RemoteRebootWindows(); break;
|
|
||||||
case 6: OpenComputerCups(); break;
|
|
||||||
case 7: ExecuteCustomCommandViaSSH(); break;
|
|
||||||
case 8: FixConky(); break;
|
|
||||||
case 9: RemoteRebootLinux(); break;
|
|
||||||
case 10: ShowLinuxComputerBootupTime(); break;
|
|
||||||
case 11: ChangeRemote802Password(); break;
|
|
||||||
case 12: DisableKdeWallet(); break;
|
|
||||||
case 630300: ResetAdminPassword(); break;
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
Menu();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class JsonFile
|
class JsonFile
|
||||||
{
|
{
|
||||||
public int sleep_time = 0;
|
public int sleep_time = 0;
|
||||||
public int restart_time = 0;
|
public int restart_time = 0;
|
||||||
public string message = "";
|
public string message = "";
|
||||||
public Dictionary<string, List<int>> everyday_reboot = null;
|
public Dictionary<string, List<int>> arm_list = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StartRestartComputers()
|
static void StartRestartComputers()
|
||||||
{
|
{
|
||||||
string path = Path.Combine(Environment.CurrentDirectory, "settings.json");
|
string path = Path.Combine(Environment.CurrentDirectory, "settings.json");
|
||||||
if (!File.Exists(path))
|
if (!File.Exists(path))
|
||||||
@@ -564,7 +553,7 @@ namespace domain_utility
|
|||||||
JsonFile data = JsonConvert.DeserializeObject<JsonFile>(File.ReadAllText(path));
|
JsonFile data = JsonConvert.DeserializeObject<JsonFile>(File.ReadAllText(path));
|
||||||
string remote, unitKey;
|
string remote, unitKey;
|
||||||
int sleep_time = data.sleep_time;
|
int sleep_time = data.sleep_time;
|
||||||
foreach (var unit in data.everyday_reboot)
|
foreach (KeyValuePair<string, List<int>> unit in data.arm_list)
|
||||||
{
|
{
|
||||||
unitKey = unit.Key;
|
unitKey = unit.Key;
|
||||||
foreach (int position in unit.Value)
|
foreach (int position in unit.Value)
|
||||||
|
|||||||
@@ -45,12 +45,25 @@
|
|||||||
<Reference Include="Renci.SshNet, Version=2024.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
<Reference Include="Renci.SshNet, Version=2024.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\SSH.NET.2024.1.0\lib\net462\Renci.SshNet.dll</HintPath>
|
<HintPath>packages\SSH.NET.2024.1.0\lib\net462\Renci.SshNet.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Spectre.Console, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Spectre.Console.0.49.1\lib\netstandard2.0\Spectre.Console.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.DirectoryServices" />
|
<Reference Include="System.DirectoryServices" />
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
|
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
<package id="ILRepack.Lib.MSBuild.Task" version="2.0.34.2" targetFramework="net48" developmentDependency="true" />
|
<package id="ILRepack.Lib.MSBuild.Task" version="2.0.34.2" targetFramework="net48" developmentDependency="true" />
|
||||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net48" />
|
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net48" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
|
||||||
|
<package id="Spectre.Console" version="0.49.1" targetFramework="net48" />
|
||||||
<package id="SSH.NET" version="2024.1.0" targetFramework="net48" />
|
<package id="SSH.NET" version="2024.1.0" targetFramework="net48" />
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net48" />
|
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||||
|
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net48" />
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net48" />
|
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net48" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -2,13 +2,10 @@
|
|||||||
"sleep_time": 100,
|
"sleep_time": 100,
|
||||||
"restart_time": 1,
|
"restart_time": 1,
|
||||||
"message": "Плановая перезагрузка компьютера через 1 минуту!",
|
"message": "Плановая перезагрузка компьютера через 1 минуту!",
|
||||||
"everyday_reboot": {
|
"arm_list": {
|
||||||
"PIS": [ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 30, 31, 32 ],
|
"PIS": [ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 30, 31, 32 ],
|
||||||
|
|
||||||
"OBR": [ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 37, 40, 78, 79, 81, 82, 83, 84, 85, 86, 88, 89, 93, 94, 95, 97, 98, 99 ],
|
"OBR": [ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 37, 40, 78, 79, 81, 82, 83, 84, 85, 86, 88, 89, 93, 94, 95, 97, 98, 99 ],
|
||||||
|
|
||||||
"OBM": [ 9, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
|
"OBM": [ 9, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
|
||||||
|
|
||||||
"MMP": [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 65, 66, 68, 70, 71, 72, 73, 74, 75, 77, 78, 81, 82, 83, 84, 85, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97 ]
|
"MMP": [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 65, 66, 68, 70, 71, 72, 73, 74, 75, 77, 78, 81, 82, 83, 84, 85, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97 ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user