Shellscript не выполняется на рабочем сервере, когда вызывается с кодом c# на терминале cygwin - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть сценарий оболочки, который я должен запустить на windows сервере, который является промежуточным сервером. Имя сценария оболочки - 'texteffect'

Я создал командный файл с именем CurveTextEffect.bat, который содержит эту команду

@echo on

SET allParameters=%*

C:\cygwin64\bin\bash --login -c "%allParameters%"

, и я вызываю этот bat-файл с этим кодом в c#

Обратите внимание, что вся строка подготовлена ​​динамически, но окончательная строка выглядит следующим образом

string cmd = "CurveTextEffect.bat texteffect -t 'USA BALL' -S 700x -s outline -e concave -d 0.5 -f Impact -p 29.7286291125 -c '#FFFFFF'   -l 0.41289762 -b none 'D:/1.0.0/CurvedImage.png'"

здесь "CurveTextEffect.bat" - это имя командного файла, а "texteffect" - это имя сценария

ProcessStartInfo startInfo = new ProcessStartInfo
{
    WindowStyle = ProcessWindowStyle.Normal,
    UseShellExecute = true,
    FileName = "cmd.exe",
    WorkingDirectory = Environment.CurrentDirectory,
    Arguments = string.Format(@"/C " + cmd),
    CreateNoWindow = false
};

try
{
    using (Process process = new Process())
    {
        process.StartInfo = startInfo;
        process.EnableRaisingEvents = true;
        process.Start();
        process.WaitForExit();
    }
}
catch (Exception ex)
{
    // Log message in logger
    // Log the parameters and the enviournment path in the logger
    _context.Logs.Add(new Logs()
    {
        LogMessage = ex.Message,
        CreatedOn = DateTime.UtcNow,
        LogLevel = Enum.GetName(typeof(LogLevel), LogLevel.Error)
    });
}

Когда я вручную запускаю этот сценарий оболочки на сервере в терминале cygwin, он работает нормально Даже когда я вызываю этот bat-файл с аргументами, он отлично работает

Когда я вызываю терминал cygwin на сайт IIS, который установлен на windows сервере через приведенный выше код c#, он не будет работать

Я также проверил журналы IIS, где написано, что texteffect не имеет такой команды

Я также настроил путь cygwin и sh ellscript в переменных окружения, как указано здесь, но затем также говорится, что команда не найдена: как сделано здесь

Может кто-нибудь помочь мне в этом?

Я следовал шаги, описанные здесь для установки Cygwin с URL-адресом ImageMagick: - http://im.snibgo.com/cygwin.htm

Когда я запускаю его на локальном IIS, он работает нормально, но при развертывании на стадии установки сценария оболочки не run

Можно ли как-то определить, что сценарий оболочки выполняется на промежуточном windows сервере или нет?

Windows версия на промежуточном сайте: Windows Server 2016 Datacenter I Я использую эту версию ImageMagick-6.9.8-4-Q16-x86-dll.exe ImageMagick

Это мои настроенные пути в переменных среды

C:\cygwin64\bin 
C:\cygwin64\usr\local\bin 
D:\MyScripts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...