cronからgoogle driveへのデータのアップロードスクリプトを動かすと、OAuthErrorエラーが発生しアップロードが失敗した時の対処方法
【状況】
使用OS:CentOS
1.google driveにファイルアップロードするスクリプトを/root/gdrive.shを作る
2./root/gdrive.shを直接実行すると、問題なくgoogle driveにデータがアップロードされることを確認
3.cronから/root/gdrive.shを実行すると、なぜか下記のOAuthErrorエラーが発生し、アップロードが失敗する
【OAuthErrorエラーの内容】
Enter verification code: An error occurred creating Drive client: OAuthError: updateToken: Unexpected HTTP status 400 Bad Request
【作成したスクリプト/root/gdrive.shの内容】
#!/bin/bash
/usr/sbin/gdrive upload -p [フォルダID] --file /home/backup.zip
※[フォルダID]は下記のコマンドで確認できる
# gdrive list
以下実際に行った対処方法
■修正1
cronにて実行するスクリプトにsudoを追記する
【cronの設定】
0 1 * * * root sudo /root/gdrive.sh
■修正2
/etc/sudoersを修正し、cronからsudoできるようにする
【/etc/sudoersの初期状態】
Defaults requiretty
【/etc/sudoersの変更後】
Defaults requiretty
Defaults!/root/gdrive.sh !requiretty
以上の2か所の変更で無事cron経由でgoogle driveへのアップロードができるようになった。