2014-09-29 46 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> 

任何想法,將不勝感激...

感謝, 布賴恩

+1

您是否嘗試過運行的是砰砰命令或批處理文件作爲ColdFusion服務運行的用戶登錄?聽起來像是一個許可問題。 – 2014-09-30 01:16:15

+1

你可能也想運行'cmd c:\ path \ to \ batchfile.bat args',因爲我不確定cfexecute會執行那樣的批處理文件。我認爲你需要運行命令解釋器並告訴運行一個批處理文件。 – barnyr 2014-09-30 05:07:18

+0

使用errorVariable =「foo」將錯誤返回給變量,然後輸出foo。 – 2014-09-30 11:09:08

回答

1

嘗試

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

請補充說明爲什麼這會有所幫助。 – Zane 2014-10-01 15:13:17

+0

@Zane據我所知,這是在cfexecute中執行批處理文件的正確方法。但也可能有其他我不熟悉的方式。 – Nebu 2014-10-01 15:34:30

+0

批評與代碼無關。我與缺乏解釋有關,這就是爲什麼另一個用戶將您的問題標記爲低質量的原因。 – Zane 2014-10-01 15:35:34