internal static HostCredentialsItemModel ToModel(this HostCredentialsItemEntity entity) => new HostCredentialsItemModel
 {
     Type     = entity.Type,
     Port     = entity.Port,
     Username = entity.Username,
     Password = entity.Password
 };
        public static CommandResult CheckConnection(this HostCredentialsItemEntity credentials, HostOperatingSystem operatingSystem, string host, out IRemoteHostClientService client)
        {
            client = null;

            string command;
            var    arguments = new List <string>();

            switch (operatingSystem)
            {
            case HostOperatingSystem.MacOS:
            case HostOperatingSystem.Linux:
                command = "uname";
                arguments.Add("-a");
                break;

            case HostOperatingSystem.WindowsOS:
                command = "ver";
                break;

            default:
                command = "";
                break;
            }

            if (credentials.Type == HostConnectionType.SSH)
            {
                try
                {
                    client = SshClientService.Create(new SshConnectionByPasswordCredentials
                    {
                        Host     = host,
                        Port     = credentials.Port,
                        Username = credentials.Username,
                        Password = credentials.Password
                    });
                    return(client.Send(command, arguments.ToArray()));
                }
                catch (Exception e)
                {
                    return(new CommandResult
                    {
                        Command = $"{command} {string.Join(' ', arguments)}",
                        Output = null,
                        Error = e.Message,
                        ExitStatus = -1
                    });
                }
            }

            return(null);
        }