diff --git a/server/AyaNova/generator/CoreJobBackup.cs b/server/AyaNova/generator/CoreJobBackup.cs index 74281b97..5c804143 100644 --- a/server/AyaNova/generator/CoreJobBackup.cs +++ b/server/AyaNova/generator/CoreJobBackup.cs @@ -70,21 +70,11 @@ namespace AyaNova.Biz var Arguments = $"{DBNameParameter} -Fc > {DataBackupFile}"; - var RunCommand=$"/C {BackupUtilityCommand} {Arguments}"; - - log.LogInformation("BACKUP STUB: DATA BACKUP RUNNING NOW - TORA TORA TORA!"); - //log.LogInformation($"CALLING BACKUP COMMAND: {BackupUtilityCommand} {Arguments}"); - - //RUN THE BACKUP - //var Result = RunProgram.Run(BackupUtilityCommand, Arguments, log); - List args=new List(); - args.Add(RunCommand); - // args.Add("--dbname=postgresql://postgres:raven@127.0.0.1:5432/AyaNova"); - // args.Add("-Fc"); - // args.Add(">"); - // args.Add(DataBackupFile); - var Result = RunProgram.Run("cmd.exe",args, log); - log.LogInformation($"BACKUP RESULT: {Result}"); + var Result = RunProgram.Run(BackupUtilityCommand, Arguments, log); + if (string.IsNullOrWhiteSpace(Result)) + log.LogDebug("BACKUP SUCCESSFUL (NO ERROR)"); + else + log.LogInformation($"BACKUP ERROR: {Result}"); //DO FILE BACKUP IF ATTACHMENTS BACKED UP diff --git a/server/AyaNova/util/RunProgram.cs b/server/AyaNova/util/RunProgram.cs index ec804d90..ea6893b6 100644 --- a/server/AyaNova/util/RunProgram.cs +++ b/server/AyaNova/util/RunProgram.cs @@ -10,7 +10,7 @@ namespace AyaNova.Util { - public static string Run(string cmd, List arguments, ILogger log = null) + public static string Run(string cmd, string arguments, ILogger log = null) { try { @@ -46,51 +46,26 @@ namespace AyaNova.Util - private static string RunWindows(string cmd, List arguments) + private static string RunWindows(string cmd, string arguments) { - /* - process.StartInfo.UseShellExecute = false; -process.StartInfo.RedirectStandardOutput = true; -process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data); -process.Start(); -process.BeginOutputReadLine(); + //RunProgram.Run("cmd.exe",FullRunCommand, log); + // var FullRunCommand=$"/C {BackupUtilityCommand} {Arguments}"; - */ - // string result = string.Empty; - // using (var process = new Process()) - // { - // process.StartInfo = new ProcessStartInfo - // { - // FileName = cmd, - // Arguments = arguments, - // RedirectStandardOutput = true, - // UseShellExecute = false, - // CreateNoWindow = true, - // }; - // process.OutputDataReceived += (sender, args) => result += args.Data; - // process.Start(); - // // string result = process.StandardOutput.ReadToEnd(); - // // process.WaitForExit(); - // return result; - // } - - - - //this executes but doesnt return error +//for Windows need to pass to cmd.exe because often have command line piping etc + var args=$"{cmd} {arguments}"; using (var process = new Process()) { process.StartInfo = new ProcessStartInfo { - FileName = cmd, - // Arguments = arguments, + FileName = "cmd.exe /C", + Arguments = args, RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true, }; + - foreach (string s in arguments) - process.StartInfo.ArgumentList.Add(s); process.Start(); string result = $"{process.StandardOutput.ReadToEnd()}{process.StandardError.ReadToEnd()} "; @@ -99,7 +74,7 @@ process.BeginOutputReadLine(); } } - private static string RunLinuxBash(string cmd, List arguments) + private static string RunLinuxBash(string cmd, string arguments) { var escapedArgs = $"{cmd} {arguments}".Replace("\"", "\\\""); @@ -108,13 +83,11 @@ process.BeginOutputReadLine(); process.StartInfo = new ProcessStartInfo { FileName = "/bin/bash", - // Arguments = $"-c \"{escapedArgs}\"", + Arguments = $"-c \"{escapedArgs}\"", RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, }; - foreach (string s in arguments) - process.StartInfo.ArgumentList.Add(s); process.Start(); string result = process.StandardOutput.ReadToEnd(); @@ -124,21 +97,18 @@ process.BeginOutputReadLine(); } - private static string RunOSX(string cmd, List arguments) + private static string RunOSX(string cmd, string arguments) { using (var process = new Process()) { process.StartInfo = new ProcessStartInfo { FileName = cmd, - - // Arguments = arguments, + Arguments = arguments, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, }; - foreach (string s in arguments) - process.StartInfo.ArgumentList.Add(s); process.Start(); string result = process.StandardOutput.ReadToEnd();