public virtual ProcessOutput ExecuteCcm(string args, int timeout = 90000, bool throwOnProcessError = true) { var executable = GetExecutable(ref args); Trace.TraceInformation(executable + " " + args); TestContext.Progress.WriteLine(executable + " " + args); var output = CcmProcessExecuter.ExecuteProcess(executable, args, timeout); if (throwOnProcessError) { CcmProcessExecuter.ValidateOutput(output); } return(output); }
public override ProcessOutput ExecuteCcm(string args, int timeout = 90000, bool throwOnProcessError = true) { var executable = GetExecutable(ref args); Trace.TraceInformation(executable + " " + args); var output = new ProcessOutput(); if (_sshClient == null) { Trace.TraceInformation("Connecting ssh client..."); var kauth = new KeyboardInteractiveAuthenticationMethod(_user); var pauth = new PasswordAuthenticationMethod(_user, _password); var connectionInfo = new ConnectionInfo(_ip, _port, _user, kauth, pauth); connectionInfo.Timeout = TimeSpan.FromMinutes(5); kauth.AuthenticationPrompt += delegate(object sender, AuthenticationPromptEventArgs e) { foreach (var prompt in e.Prompts) { if (prompt.Request.ToLowerInvariant().StartsWith("password")) { prompt.Response = _password; } } }; if (!string.IsNullOrEmpty(_privateKeyFilePath)) { var privateKeyAuth = new PrivateKeyAuthenticationMethod(_user, new PrivateKeyFile[] { new PrivateKeyFile(_privateKeyFilePath) }); connectionInfo = new ConnectionInfo(_ip, _port, _user, privateKeyAuth); } _sshClient = new SshClient(connectionInfo); } if (!_sshClient.IsConnected) { _sshClient.Connect(); } var result = _sshClient.RunCommand(string.Format(@"{0} {1}", executable, args)); output.ExitCode = result.ExitStatus; if (result.Error != null) { output.OutputText.Append(result.Error); } else { output.OutputText.Append(result.Result); } if (throwOnProcessError) { CcmProcessExecuter.ValidateOutput(output); } return(output); }