cron 作業中的 SFTP

cron 作業中的 SFTP

問題

  1. 我想透過 SFTP 自動下載文件
  2. 我設定了 SFTP 伺服器和金鑰機制
  3. 我創建了一個簡單的 bash 腳本 -腳本文件
  4. 我在 cron 中為腳本新增了一個條目

劇本,腳本文件:

#!/bin/bash  
sftp user@server:/home/user/file.txt  
exit 0

手動執行腳本工作正常(文字檔案保存在主目錄中),但添加腳本文件(具有適當的權限)crontab不執行任何操作。

crontab 條目:

* * * * * /home/user/script.sh

對於身份驗證,我曾經ssh-keygen創建一組金鑰(私有、公用)並設定對 SFTP 伺服器的交叉身份驗證。

對於腳本自動化,我使用keychain無密碼身份驗證。

現在

目前,我有一個名為腳本文件位於“用戶”主目錄 ( /home/user/)。

手動運行時root,腳本從 SFTP 伺服器取得文件,並將其放在/home/user/.

從作業運行時,它不會執行此操作cron。在 中cron,該sftp指令出現錯誤。

有想法嗎?

正在努力

  1. 改變變數 on/etc/crontab並沒有解決問題
  2. 聲明完整路徑腳本文件沒有解決問題
  3. 陳述小路變數在腳本文件沒有解決問題
  4. 我從命令中發現了錯誤sftp- 它是255

手動執行腳本(./script.sh)仍然可以完美地工作...

答案1

一個工作範例:

一個名為的簡單腳本hello.sh,將單字 hello 附加到文字檔案(每個命令使用完整路徑):

筆記 myuser是您的用戶名

#!/bin/bash
printf 'hello' >> /home/myuser/hello.txt

使用使腳本可執行chmod +x hello.sh

每分鐘運行一次的 crontab 條目您可以根據您的需求進行更改:

* * * * * /home/myuser/hello.sh

一些細節:

  • 每個 cron 作業都以註冊它的使用者身分執行。如果 root 使用者註冊了一個 cron 作業,則作業將以 root 權限執行。

  • 如果非root使用者註冊了一個cron作業,則作業將以上述使用者的權限執行;如果作業需要root權限,它將失敗,因為它是由非root使用者啟動的...

  • 最好使用完整路徑呼叫命令和腳本,以確保 cron 可以正確找到並呼叫它們,否則它可能會失敗而沒有有用的回饋。

相關內容