シェルスクリプトで2要素認証を使用することを絶対に確信していますか?もしそうなら、あなたはあなたのコンピュータやスクリプトを「信頼できる」ものとして取得しようとする必要はありません。スクリプトを実行するたびに、完全な2要素認証を実行するだけです。
ターゲットが手動の第2要素の認証をスキップすることである場合は、代わりにアプリケーション固有のパスワードを使用することをお勧めします(他の回答ですでに提案されているように)。2要素認証をまったく使用していないふりをして、実際のログイン名を使用しますが、パスワードはhttps://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en(httpsのサブページ)で生成されたものに設定します。 ://www.google.com/settings/security)。
目的は、アプリケーション固有のパスワード「Name」を自分にとって意味のある値に設定することです。たとえば、「Pidgin at work」、「My Android Phone」、「Thunderbird Google Address Book Extension atWork」などのラベルの付いたパスワードがあります。「CalendarandReaderExportScript」のパスワードを使用できます。このアプリケーション固有のパスワードが危険にさらされている(「漏洩している」)と思われる場合は、同じページの[取り消し]リンクをクリックして、スクリプトの新しいパスワードを生成してください。
コードには、Googleの単一要素認証で機能した最後のバージョンを使用してください。更新:元の質問はセッションログインを開始するためにURLを使用していたため、https://accounts.google.com/ServiceLogin
実際にはブラウザログインを偽造しています。ただし、Googleはこれを公式にサポートしておらず、私がこれを書いているときに、通常のログインにアプリケーション固有のパスワードを使用すると、「アプリケーション固有のパスワードの代わりにアカウントのパスワードを使用してください」というエラーメッセージが表示されるようです。
Googleの2要素認証と「信頼できるコンピューター」について理解しておくべきことの1つは、実際の実装では、有効期限が30日の永続的なCookieがブラウザーに追加されるだけであるということです。信頼できるコンピューターは、IPアドレスが信頼されている、またはその他の魔法の接続が作成されていることを意味するものではありません。スクリプトが選択したブラウザから「信頼できるコンピュータ」のCookieをキャプチャしない限り、コンピュータを信頼できるものとしてマークしたことがあるかどうかはまったく問題ではありません。(Googleフォームには、「このコンピューターを30日間記憶する」ではなく、「このブラウザーとユーザーアカウントの組み合わせを30日間信頼する(永続的なCookieを保存する)」と記載する必要があります。ただし、これは技術的すぎると考えられていました...)
更新:(以下の私のコメントからコピー)公式にサポートされている唯一の方法(サーバー間アプリケーション)は、https://developers.google.com/accounts/docs/OAuth2ServiceAccountに記載されています。リクエストをエンコードし、 https://code.google.com/apis/consoleで作成されたサービスアカウントの秘密鍵を使用するOAuth/JWTが必要です。別の方法として、ClientLogin認証を使用することもできます(2015年までは、すでに非推奨のベストエフォートサービスです)。
OAuthを使用する場合は、http://blog.yjl.im/2010/05/bash-oauth.htmlおよびhttps://github.com/oxys-net/curl-oauthを参照してください。