Пример #1
0
 private void ClearMotionHostPC_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Чистка Motion по хосту {curSelIP.NBNameOrIP()}", Properties.Resources.sshCommand_ClearMotion, SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #2
0
 private void ZabbixAgentUpdate_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Обновление Zabbix Agent по хосту {curSelIP.NBNameOrIP()}", Properties.Resources.sshCommand_ZabbixAgentUpdate, SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #3
0
 private void DeleteProfileChromium_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Удаление профиля Chromium на хосте {curSelIP.NBNameOrIP()}", "rm -f '/home/user/.config/chromium/SingletonLock'", SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #4
0
 private void UnLockScript_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP            curSelIP      = SelectedIP;
         StringBuilder commandUnlock = new StringBuilder();
         commandUnlock.AppendLine("echo $TempPass|sudo -S iptables -F && echo $TempPass|sudo -S iptables -X && echo $TempPass|sudo -S iptables -L");
         SSHCommandThread(curSelIP, $"Разблокировать интернет на хосте {curSelIP.NBNameOrIP()}", commandUnlock.ToString(), SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #5
0
        private void AddAliasInBash_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            if (Bindings.isipselected)
            {
                IP            curSelIP        = SelectedIP;
                StringBuilder commandSmartCtl = new StringBuilder();

                //commandSmartCtl.AppendLine("echo $TempPass|sudo -S smartctl -a /dev/sda");
                SSHCommandThread(curSelIP, $"Добавить Alias в /etc/bash.bashrc {curSelIP.NBNameOrIP()}", Properties.Resources.sshCommand_AddAlias1C_reinstall, SelectedCredentials.Login, SelectedCredentials.Password);
            }
        }
Пример #6
0
        private string SSHCommandThreadGetResult(IP selectedIP, string command, string commandinresult, string login, string password)
        {
            try
            {
                this.Log(string.Format($"Выполнение {command} на {selectedIP.NBNameOrIP()}..."), false, false, string.Empty, true);
                string nbNameOrIP = selectedIP.NBNameOrIP();
                string ipaddress  = selectedIP.IPAddress;


                using (SshClient client = new SshClient(ipaddress, login, password))
                {
                    client.Connect();
                    StringBuilder commandBuild = new StringBuilder();
                    commandBuild.AppendLine(@"#!/bin/bash");
                    commandBuild.AppendLine($"TempPass={password}");
                    commandBuild.AppendLine(commandinresult);
                    string commandExec = commandBuild.ToString().Replace("\r\n", "\n");


                    var runCommand = client.CreateCommand(commandExec);

                    string result = runCommand.Execute();

                    client.Disconnect();
                    return(result);
                }
            }
            catch (ArgumentException exception)
            {
                Log("Необходимо выбрать логин и пароль", true, true, exception.StackTrace, false);
                return("Ошибка Необходимо выбрать логин и пароль");
            }
            catch (Exception exception)
            {
                this.Log(exception.Message, true, true, exception.StackTrace, false);
                return("Ошибка");
            }

            //});
        }
Пример #7
0
 private void ZimbraComplectScript_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP            curSelIP             = SelectedIP;
         StringBuilder commandZimbraInstall = new StringBuilder();
         commandZimbraInstall.AppendLine("tar xzvf /home/user/zimbra_desktop_update.tar.gz");
         commandZimbraInstall.AppendLine("cd zimbra_desktop");
         commandZimbraInstall.AppendLine("echo $TempPass|sudo -S perl install.pl");
         commandZimbraInstall.AppendLine("perl /opt/zimbra/zdesktop/linux/user-install.pl");
         SSHCommandThread(curSelIP, $"Установка Zimbra 7.2.8 на хосте {curSelIP.NBNameOrIP()}", commandZimbraInstall.ToString(), SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #8
0
        private void mac_info_thread(IP selectedIP)
        {
            string mac = GetMac(selectedIP.IPAddress);

            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => CopyToClipboard(mac, true, "")));

            string mac_msg = null;

            for (int i = 0; i < this.macvendors.Length; i += 2)
            {
                if (mac.StartsWith(this.macvendors[i]))
                {
                    mac_msg = "MAC адрес: " + mac + "\nПроизводитель: " + this.macvendors[i + 1];
                    break;
                }
            }
            if (mac_msg != null)
            {
                base.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
                {
                    TaskDialogOptions options = new TaskDialogOptions
                    {
                        Owner = this,
                        Title = "DSList",
                        MainInstruction = selectedIP.NBNameOrIP(),
                        Content = mac_msg,
                        MainIcon = VistaTaskDialogIcon.Information
                    };
                    options.CustomButtons = new string[] { "ОК" };
                    options.AllowDialogCancellation = true;
                    TaskDialog.Show(options);
                }));
            }
            else
            {
                Log($"Не удалось определить mac адрес для {selectedIP.NBNameOrIP()}", false, false);
            }
        }
Пример #9
0
 private void SmartCtl_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP            curSelIP        = SelectedIP;
         StringBuilder commandSmartCtl = new StringBuilder();
         //commandSmartCtl.AppendLine("echo $TempPass|sudo -S su");
         commandSmartCtl.AppendLine("echo $TempPass|sudo -S apt-get -y install smartmontools");
         commandSmartCtl.AppendLine("echo $TempPass|sudo -S fdisk -l");
         commandSmartCtl.AppendLine("echo $TempPass|sudo -S smartctl --smart=on /dev/sda");
         commandSmartCtl.AppendLine("echo $TempPass|sudo -S smartctl -a /dev/sda");
         SSHCommandThread(curSelIP, $"S.M.A.R.T по хосту {curSelIP.NBNameOrIP()}", commandSmartCtl.ToString(), SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #10
0
        private void DS_Benchmark_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            if (Bindings.isipselected)
            {
                IP curSelIP = SelectedIP;

                #region Скопировать DS_Benchmark.tar.gz на хост
                string pathTofileDS_Bencmark = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, @"SupportTools\LinuxScripts");
                SftpCopy("DS_Benchmark.tar.gz", pathTofileDS_Bencmark, @"/home/user/", curSelIP.IPAddress, SelectedCredentials.Login, SelectedCredentials.Password);

                string pathTofilebench = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, @"SupportTools\LinuxScripts");
                SftpCopy("bench.sh", pathTofilebench, @"/home/user/", curSelIP.IPAddress, SelectedCredentials.Login, SelectedCredentials.Password);
                #endregion

                #region Выполнение скрипта тестирования DS_Benchmark

                SSHCommandThread(curSelIP, $"Тестирование производительности хоста {curSelIP.NBNameOrIP()} с помощью DS_Benchmark", @"echo $TempPass|sudo -S sh /home/user/bench.sh", SelectedCredentials.Login, SelectedCredentials.Password);

                #endregion
            }
        }
Пример #11
0
        private void Ink1CWine_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            if (Bindings.isipselected)
            {
                IP curSelIP = SelectedIP;
                PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(curSelIP.IPAddress, 22, SelectedCredentials.Login, SelectedCredentials.Password);
                connectionInfo.Timeout = TimeSpan.FromSeconds(30);

                #region Скопировать ibases.v8i и скрипт на хост
                using (var sftp = new SftpClient(connectionInfo))
                {
                    try
                    {
                        sftp.Connect();
                        string fileDS_Bencmark = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, @"SupportTools\LinuxScripts\ibases.v8i");
                        using (FileStream stream = new FileStream(fileDS_Bencmark, FileMode.Open, FileAccess.Read))
                        {
                            sftp.UploadFile(stream, @"/home/user/ibases.v8i", true);
                            stream.Close();
                            stream.Dispose();
                        }

                        string filebench = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, @"SupportTools\LinuxScripts\copyInk.sh");
                        using (FileStream stream = new FileStream(filebench, FileMode.Open, FileAccess.Read))
                        {
                            sftp.UploadFile(stream, @"/home/user/copyInk.sh", true);
                            stream.Close();
                            stream.Dispose();
                        }
                    }
                    catch (Exception ex)
                    {
                        Log(ex.Message, true, false, ex.StackTrace);
                    }
                    finally
                    {
                        sftp.Disconnect();
                        sftp.Dispose();
                    }
                }
                #endregion

                #region Выполнение скрипта тестирования DS_Benchmark

                SSHCommandThread(curSelIP, $"Копирование ярлыка со списком БД на хост {curSelIP.NBNameOrIP()}", @"echo $TempPass|sudo -S sh /home/user/copyInk.sh", SelectedCredentials.Login, SelectedCredentials.Password);

                #endregion
            }
        }
Пример #12
0
        private void SSHCommandThread(IP selectedIP, string command, string commandinresult, string login, string password, bool showWindow = true, bool addToListBoxTask = true)
        {
            Thread runThread = new Thread(new ThreadStart(() =>
            {
                ItemListBoxTask curItemLBT = new ItemListBoxTask()
                {
                    IPOrName = selectedIP.NBNameOrIP(), Description = $"Выполняется {command}", CVZNumber = $"ЦВЗ№{SelectedTT.NumberCVZ.ToString()}", IsIndeterminate = true
                };

                //Dispatcher.Invoke(() =>
                //{

                if (addToListBoxTask)
                {
                    Dispatcher.Invoke(() =>
                    {
                        Bindings.listBoxTaskItemsSource.Add(curItemLBT);
                    });
                }
                try
                {
                    this.Log(string.Format($"Выполнение {command} на {selectedIP.NBNameOrIP()}..."), false, false, string.Empty, true);
                    string nbNameOrIP = selectedIP.NBNameOrIP();
                    string ipaddress  = selectedIP.IPAddress;


                    using (SshClient client = new SshClient(ipaddress, login, password))
                    {
                        client.Connect();
                        StringBuilder commandBuild = new StringBuilder();
                        commandBuild.AppendLine(@"#!/bin/bash");
                        commandBuild.AppendLine($"TempPass={password}");
                        commandBuild.AppendLine(commandinresult);
                        string commandExec    = commandBuild.ToString().Replace("\r\n", "\n");
                        bool uploadFileStoped = false;

                        var runCommand = client.CreateCommand(commandExec);
                        var runClient  = runCommand.BeginExecute((x) =>
                        {
                            var temp = curItemLBT.StopProcess;
                            if (curItemLBT.StopProcess)
                            {
                                if (!uploadFileStoped)
                                {
                                    try
                                    {
                                        uploadFileStoped = true;
                                        showWindow       = false;
                                        client.Disconnect();
                                        //return $"Прервано выполнение {command}";
                                    }
                                    catch (Exception)
                                    {
                                    }
                                }
                            }
                        });

                        string result = runCommand.EndExecute(runClient);

                        client.Disconnect();
                        if (showWindow)
                        {
                            base.Dispatcher.BeginInvoke((Action)(() =>
                            {
                                SSHReportWindow window = new SSHReportWindow(this)
                                {
                                    Owner = this,
                                    Title = string.Format($"Команда SSH {command} на {nbNameOrIP}"),
                                    Text = { Text = result },
                                    SSHStatusBarText = { Text = string.Format($"Команда SSH {command} на {nbNameOrIP} выполнена.") }
                                };
                                this.Log(window.SSHStatusBarText.Text, false, false, "", false);
                                window.Show();
                            }));
                        }
                    }
                }
                catch (ArgumentException exception)
                {
                    Log("Необходимо выбрать логин и пароль", true, true, exception.StackTrace, false);
                }
                catch (Exception exception)
                {
                    this.Log(exception.Message, true, true, exception.StackTrace, false);
                }

                //});
            }));

            runThread.Start();


            //while (!curItemLBT.StopProcess || (runThread.ThreadState != System.Threading.ThreadState.Stopped) || (runThread.ThreadState != System.Threading.ThreadState.Aborted))
            //{

            //    if (!(runThread.ThreadState == System.Threading.ThreadState.Stopped))
            //    {
            //        runThread.Abort();
            //    }
            //}
        }
Пример #13
0
 private void RefreshProfileZimbra_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Обновление профиля пользователя Zimbra Desktop на хосте {curSelIP.NBNameOrIP()}", "pkill -9 zdclient ; perl /opt/zimbra/zdesktop/linux/user-install.pl", SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #14
0
 private void KillChromeFirefoxProcess_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Аварийное завершение работы браузеров Chrome и Firefox на хосте {curSelIP.NBNameOrIP()}", "pkill -9 chrom ; pkill -9 firefox", SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #15
0
 private void KillZimbraProcess_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Аварийное завершение работы Zimbra Desktop на хосте {curSelIP.NBNameOrIP()}", "pkill -9 zdclient", SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }
Пример #16
0
 private void Kill1CWine_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (Bindings.isipselected)
     {
         IP curSelIP = SelectedIP;
         SSHCommandThread(curSelIP, $"Аварийное завершение работы клиента 1C на хосте {curSelIP.NBNameOrIP()}", "pkill -9 wine; pkill -9 1c", SelectedCredentials.Login, SelectedCredentials.Password);
     }
 }