問題
- 我想透過 SFTP 自動下載文件
- 我設定了 SFTP 伺服器和金鑰機制
- 我創建了一個簡單的 bash 腳本 -腳本文件
- 我在 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
指令出現錯誤。
有想法嗎?
正在努力
- 改變家變數 on
/etc/crontab
並沒有解決問題 - 聲明完整路徑腳本文件沒有解決問題
- 陳述小路變數在腳本文件沒有解決問題
- 我從命令中發現了錯誤
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 可以正確找到並呼叫它們,否則它可能會失敗而沒有有用的回饋。