Update Program.cs

Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
2024-10-28 20:49:42 +07:00
parent 2e563df664
commit 19964226bb

View File

@@ -30,6 +30,18 @@ namespace domain_utility
{ "^[rR]\\d*[-]\\d+[a-zA-Z]+\\d+$", "" } // R54-630300THE01
};
private static string InputRemoteComputer(string str, Action callback)
{
Console.Clear();
Console.WriteLine(str);
Console.Write("> ");
string remote = Console.ReadLine().Trim();
if (remote == string.Empty || remote.Length == 0)
InputRemoteComputer(str, callback);
Console.WriteLine();
return remote;
}
private static void BackToMenu(Action callback, bool noMessage = false)
{
if (noMessage == false)
@@ -46,6 +58,19 @@ namespace domain_utility
}
}
private static string СheckComputerName(string pcName)
{
for (int i = 0; i < computerNameRegex.GetLength(0); i++)
if (Regex.Match(pcName, computerNameRegex[i, 0]).Success)
return $"{computerNameRegex[i, 1]}{pcName}".ToUpper();
return string.Empty;
}
private static bool IsStringContainIp(string ip)
{
return Regex.Match(ip, @"^(\d+[.]\d+[.]\d+[.]\d+)$").Success;
}
private static string PingHost(string host)
{
string returnMessage = string.Empty;
@@ -94,19 +119,6 @@ namespace domain_utility
return returnMessage;
}
private static string СheckComputerName(string pcName)
{
for (int i = 0; i < computerNameRegex.GetLength(0); i++)
if (Regex.Match(pcName, computerNameRegex[i, 0]).Success)
return $"{computerNameRegex[i, 1]}{pcName}";
return string.Empty;
}
private static bool IsStringContainIp(string ip)
{
return Regex.Match(ip, @"^(\d+[.]\d+[.]\d+[.]\d+)$").Success;
}
public static void ResetAdminPassword()
{
string machineNameAndUser = WindowsIdentity.GetCurrent().Name.ToString();
@@ -124,16 +136,8 @@ namespace domain_utility
private static void ShowDomainUserInfo()
{
Console.Clear();
Console.Write("\nВведите имя пользователя (пр. 'lev.rusanov'): ");
string username = Console.ReadLine().Trim();
if (username == string.Empty || username.Length == 0)
{
ShowDomainUserInfo();
return;
}
Console.WriteLine();
string username = InputRemoteComputer("\nВведите имя пользователя (пр. 'lev.rusanov'): ", ShowDomainUserInfo);
username = $"user {username} /domain";
ProcessStartInfo procStartInfo = new ProcessStartInfo("net", username)
@@ -184,15 +188,8 @@ namespace domain_utility
private static void ShowComputerBootupTime()
{
Console.Clear();
Console.WriteLine("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ");
string remote = Console.ReadLine().Trim();
if (remote == string.Empty || remote.Length == 0)
{
ShowComputerBootupTime();
return;
}
Console.WriteLine();
string remote = InputRemoteComputer("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ",
ShowComputerBootupTime);
if (!IsStringContainIp(remote))
{
@@ -227,19 +224,13 @@ namespace domain_utility
private static void StartPing()
{
Console.Clear();
Console.WriteLine("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ");
string host = Console.ReadLine().Trim();
if (host == string.Empty || host.Length == 0)
{
StartPing();
return;
}
string remote = InputRemoteComputer("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ",
StartPing);
if (!IsStringContainIp(host))
if (!IsStringContainIp(remote))
{
host = СheckComputerName(host);
if (host == string.Empty)
remote = СheckComputerName(remote);
if (remote == string.Empty)
{
Console.WriteLine("Имя компьютера или IP-адрес не распознаны! Попробуйте еще раз.");
BackToMenu(StartPing);
@@ -247,13 +238,12 @@ namespace domain_utility
}
}
Console.WriteLine();
if (Regex.Match(host, @"^([rR]\d*[-]\d+[a-zA-Z]+\d+)$").Success)
if (Regex.Match(remote, @"^([rR]\d*[-]\d+[a-zA-Z]+\d+)$").Success)
{
try
{
IPAddress ip = Dns.GetHostEntry(host).AddressList.First(addr => addr.AddressFamily == AddressFamily.InterNetwork);
Console.WriteLine("Обмен пакетами с {0} [{1}] по с 32 байтами данных:", host, ip);
IPAddress ip = Dns.GetHostEntry(remote).AddressList.First(addr => addr.AddressFamily == AddressFamily.InterNetwork);
Console.WriteLine("Обмен пакетами с {0} [{1}] по с 32 байтами данных:", remote, ip);
}
catch (Exception)
{
@@ -263,11 +253,11 @@ namespace domain_utility
}
}
else
Console.WriteLine("Обмен пакетами с {0} по с 32 байтами данных:", host);
Console.WriteLine("Обмен пакетами с {0} по с 32 байтами данных:", remote);
for (int i = 0; i < 10; i++)
{
Console.WriteLine(PingHost(host));
Console.WriteLine(PingHost(remote));
Thread.Sleep(1000);
}
@@ -276,14 +266,8 @@ namespace domain_utility
private static void OpenComputerCups()
{
Console.Clear();
Console.WriteLine("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ");
string remote = Console.ReadLine().Trim();
if (remote == string.Empty || remote.Length == 0)
{
OpenComputerCups();
return;
}
string remote = InputRemoteComputer("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ",
OpenComputerCups);
if (!IsStringContainIp(remote))
{
@@ -296,20 +280,50 @@ namespace domain_utility
}
}
Process.Start($"http://{remote.ToUpper()}:631/printers");
Process.Start($"http://{remote}:631/printers");
BackToMenu(OpenComputerCups);
}
private static void StartRDPConnection()
{
string remote = InputRemoteComputer("\nВведите IP адрес или имя компьютера (пр. 10.234.16.129, 'IT04', '630300IT04', 'R54-630300IT04'): ",
StartRDPConnection);
if (!IsStringContainIp(remote))
{
remote = СheckComputerName(remote);
if (remote == string.Empty)
{
Console.WriteLine("Имя компьютера или IP-адрес не распознаны! Попробуйте еще раз.");
BackToMenu(StartRDPConnection);
return;
}
}
remote = $"/v:{remote} /f";
Process proc = new Process {
StartInfo = new ProcessStartInfo("mstsc", remote)
};
proc.Start();
BackToMenu(StartRDPConnection);
}
private static void Menu()
{
Console.Clear();
Console.WriteLine("Выберите действие:\n" +
"1 - посмотреть информацию о пользователе\n" +
"2 - посмотреть дату последней загрузки компьютера (только Windows)\n" +
"3 - ping компьютера\n" +
//"4 - сброс пароля локального администратора (только Windows)\n" +
"4 - открыть CUPS выбранного компьютера");
string[] menuList = {
"Выберите действие:",
"1 - посмотреть информацию о пользователе (только Windows)",
"2 - посмотреть дату последней загрузки компьютера (только Windows)",
"3 - ping компьютера",
//"4 - сброс пароля локального администратора (только Windows)",
"4 - открыть CUPS выбранного компьютера (только Linux)",
"5 - удаленно подключиться к компьютеру (только Windows -> Windows, Windows -> Linux)"
};
for (int i = 0; i < menuList.Length; i++)
Console.WriteLine(menuList[i]);
int choice;
while (!int.TryParse(Console.ReadLine(), out choice))
Console.WriteLine("Введите цифру!");
@@ -319,7 +333,8 @@ namespace domain_utility
case 2: ShowComputerBootupTime(); break;
case 3: StartPing(); break;
case 4: OpenComputerCups(); break;
case 564: ResetAdminPassword(); break;
case 5: StartRDPConnection(); break;
case 51422415: ResetAdminPassword(); break;
default:
{
Console.WriteLine("Неправильный выбор!");