Backup (Ruby gem) Notifier Command 使用
因為之前備份的雲端空間暫時無法使用,便想說將主機自動備份程序 Backup 的雲端目標轉往 Dropbox,但無奈一直出現 DropboxAuthError: Error getting request token
錯誤。
於是改以較為土砲的方法,在 Backup 備份完成至主機本地之後,自動跑一份 Python script 將本地的備份檔自動上傳至 Dropbox,便看到了 Backup 有提供這個方法
0 1 2 3 4 5 6 7 8 9 |
notify_by Command do |cmd| cmd.on_success = true cmd.on_warning = true cmd.on_failure = true # Command to execute cmd.command = 'notify-send' end |
但無論我在 cmd.command
下 /usr/bin/python /路徑/dropbox_backup.py
,或者先 cd 至指定路徑皆會出現找不到檔案的錯誤。便猜想可能是 Ruby (Backup) 在執行時是在虛擬環境中,會找不到其他目錄中的 script。
解決方法
1.在 /usr/local/bin/
中建立一份 bash script run_python.sh
,如下:
0 1 2 3 4 |
#!/bin/sh cd "python script 的資料夾路徑" python ./dropbox_backup.py |
2.將這份 script 改成可執行的權限
0 1 2 |
$ chmod +x /usr/local/bin/run_python.sh |
3.你便可以在任意地方呼叫這份 bash script,例如
0 1 2 |
$ run_python.sh |
當然也代表在 Backup 的 Notifier command 中使用,如此便會在備份完成時執行 upload dropbox 的 Python script 了!
0 1 2 3 4 5 6 7 8 9 |
notify_by Command do |cmd| cmd.on_success = true cmd.on_warning = true cmd.on_failure = false # Command to execute cmd.command = '/usr/local/bin/run_python.sh' end |
另外補充一下用 bash script 跑 Python script 建議不要輸出 print 到 command window,不然跑完時會卡錯誤。