public static string FormatSdbRunResult(SdbRunResult commandResult, int?exitCode = null) { string msg; switch (commandResult) { case SdbRunResult.Success: if (exitCode.HasValue && (exitCode != 0) && (exitCode != -1)) { msg = $"SDB exit code is {exitCode}"; } else { msg = ""; } break; case SdbRunResult.CreateProcessError: msg = "Failed to get sdb.exe program"; break; case SdbRunResult.RunProcessError: msg = "SDB run error"; break; case SdbRunResult.Timeout: msg = "SDB timeout"; break; default: msg = "SDB error"; break; } return(msg); }
public static bool RunSdbCommandAndGetLastNonEmptyLine(SDBDeviceInfo device, string сommand, out string lastOutputLine, out string errorMessage, TimeSpan?timeout = null) { lastOutputLine = ""; string nonEmptyLine = ""; int exitCode; SdbRunResult sdbResult = RunSdbCommand(device, сommand, (bool isStdOut, string line) => { if (line != "") { nonEmptyLine = line; } return(false); }, out exitCode, timeout); if (sdbResult == SdbRunResult.Success) { lastOutputLine = nonEmptyLine; errorMessage = ""; return(true); } errorMessage = "Cannot run command. " + FormatSdbRunResult(sdbResult, exitCode); return(false); }
public static bool RunSdbShellCommandAndCheckExitStatus(SDBDeviceInfo device, string shellCommand, OutputDataProcessor outputDataProcessor, out string errorMessage, TimeSpan?timeout = null, bool isRoot = false) { int exitCode; bool success = false; SdbRunResult sdbResult = RunSdbCommand(device, $"shell \"{shellCommand} && echo {ShellSuccess} || echo {ShellFailure}\"", (bool isStdOut, string line) => { if (line.Contains(ShellSuccess)) { success = true; return(true); } if (line.Contains(ShellFailure)) { return(true); } if (outputDataProcessor != null) { if (outputDataProcessor(isStdOut, line)) { success = true; return(true); } } return(false); }, out exitCode, timeout, isRoot); if (sdbResult == SdbRunResult.Success) { if (!success) { errorMessage = "Command failed"; return(false); } errorMessage = ""; return(true); } errorMessage = "Cannot run command. " + FormatSdbRunResult(sdbResult, exitCode); return(false); }
public static bool CheckIsRoot(SDBDeviceInfo device, out bool isRoot, out string errorMessage, TimeSpan?timeout = null) { string checkIsRootScript = $"if [ $UID == 0 ]; then echo {ShellSuccess}; else echo {ShellFailure}; fi"; isRoot = false; bool result = false; bool success = false; int exitCode; SdbRunResult sdbResult = RunSdbCommand(device, $"shell \"{checkIsRootScript}\"", (bool isStdOut, string line) => { if (line.Contains(ShellSuccess)) { result = true; success = true; return(true); } if (line.Contains(ShellFailure)) { success = true; return(true); } return(false); }, out exitCode, timeout, false); if (sdbResult == SdbRunResult.Success) { if (!success) { errorMessage = "Command failed"; return(false); } isRoot = result; errorMessage = ""; return(true); } errorMessage = "Cannot run command. " + FormatSdbRunResult(sdbResult, exitCode); return(false); }