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へのアップロードができるようになった。