我有一個腳本,它應該列出 SFTP 服務器中的所有檔案并將其輸出到一個檔案中(供另一個腳本使用)。產生所需輸出的 ??cmd 是:
echo ls | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt
這將被 Windows 任務計劃程式每天呼叫幾次。出于某種原因,當調度此命令(在 .bat 檔案中)并通過 user 運行時SYSTEM,輸出檔案將僅包含以下內容:
Remote working directory is /
psftp> quit
當使用其他用戶時,輸出符合預期(列出所有檔案) -請參閱https://serverfault.com/questions/1084015/why-psftp-script-is-failing-when-ran-as-system。我需要一種撰寫腳本的方法,并且能夠SYSTEM像該系統中的其他腳本一樣運行它。我也試過以下:
psftp -l myusername -pw mycomplexpwd FTPServerHostname < C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt
和:
psftp -l myusername -pw mycomplexpwd FTPServerHostname -b C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt
其中 lscmd.txt 包含以下內容:
ls
而且行為是一樣的。我可以做些什么來做所需的行為?
作業系統是 Windows Server 2012 R2。
uj5u.com熱心網友回復:
因此,在第一個連接中增加了信任 sFTP 服務器的步驟(或將密鑰添加到HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys)。檢查相關的服務器故障問題(稍微)了解我是如何做到的更多細節。之后echo ls | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt和其他變體(例如-b)都起作用了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/362466.html
