2014-09-29 8 views
2

Мне нужно запустить удаленный скрипт в нашей сети для импорта файлов. Я настроил plink и работал, когда это необходимо, если я запускаю его вручную.Невозможно запустить сценарий с CFThread, CFExecute и Plink

палить имя @ LocalServer -ssh -i myKey.ppk /home/here/scriptName.sh

Мы пишем код в ColdFusion так что это будет работать в CFThread с использованием CFExecute. cfexecute не является ошибкой, когда я запускаю его через код, который он просто не запускает сценарий.

В моих исследованиях я обнаружил людей, говорящих, что cfexecute имеет некоторые проблемы с строкой аргумента, и лучшая идея заключается в создании командного файла и использовании cfexecute для запуска командного файла.

поэтому я создал командный файл. import.bat

C:\inetpub\wwwroot\myapp\plink\plink.exe [email protected] -ssh -i myKey.ppk /home/here/scriptName.sh) 

снова, если я запустить пакетный файл вручную он работает.

import.bat

но если я запускаю его через cfexecute он ничего не делает.

Для проверки cfexecute у меня есть две команды: первая, что мне нужно для работы, а второе - тест. второй работает по мере необходимости. первый из них не является ошибкой для экрана или файла журнала. Это произошло, если я ввел плохой синтаксис. Второй записывает файл по мере необходимости.

(код ниже)

   starting 

       <cfoutput> 

       <cfexecute name = "C:\inetpub\wwwroot\myapp\plink\import.bat" errorfile="C:\inetpub\wwwroot\myapp\logs\#timeformat(now(),"HHMMSS") #.log" ></cfexecute> 

       <cfexecute name = "C:\WinNT\System32\netstat.exe" 
          arguments = "-e" 
          outputFile = "C:\Temp\#timeformat(now(),"HHMMSS") #.txt" 
          timeout = "1"> 
        </cfexecute> 



       </cfoutput> 
       the end 
      <cfabort> 

любые мысли были бы весьма признателен ...

Спасибо, Brian

+1

Вы пробовали работает либо Plink команды или командного файла во время входа в систему как пользователь, работающий в ColdFusion? Звучит как проблема с разрешением. –

+1

Вы также можете запустить 'cmd c: \ path \ to \ batchfile.bat args', поскольку я не уверен, что cfexecute выполнит такой пакетный файл. Я думаю, вам нужно запустить интерпретатор команд и сказать, что для запуска пакетного файла. – barnyr

+0

Используйте errorVariable = "foo", чтобы вернуть ошибку в переменную, а затем вывести foo. –

ответ

1

Попробуйте

<cfexecute name="c:\winNt\system32\cmd.exe" 
arguments="/c C:\inetpub\wwwroot\myapp\plink\import.bat" timeout="100"> 
</cfexecute> 
+0

Пожалуйста, уточните, почему это поможет. – Zane

+0

@ Zane Насколько я знаю, это правильный способ выполнения пакетных файлов в cfexecute. Но могут быть и другие способы, с которыми я не знаком. – Nebu

+0

Критика не имеет ничего общего с рассматриваемым кодом. Я имею отношение к отсутствию объяснений, поэтому другой пользователь поставил ваш вопрос как низкое качество. – Zane

 Смежные вопросы

  • Нет связанных вопросов^_^