JSONをシェルスクリプトで処理するには?
Google DriveにCURLでファイルをアップロードすることはできた。
琴線探査: Google DriveにCURLでアップロードするには?
最後の問題は、Google Drive APIやOAuthで返ってきたJSONをどうやってシェルスクリプトで処理するかだ。
そこで、「jsawk」を使わせてもらうことにした。
micha/jsawk · GitHub
SpiderMonkeyのインストール
jsawkは例の有名なコマンドラインのJavaScript実行環境「SpiderMonkey」が必要なので、まずこれからインストールする。
幸いにも、DAGにパッケージがあった。DAGリポジトリを使えるようにするにはこちら。
琴線探査: さくらのVPSをMond Rescueで丸ごとバックアップしてVMWare Fusionでリストアしてみた
[root@xxx ~]# yum install js --enablerepo=dag
・・・
Dependencies Resolved
============================================
Package Arch Version Repository Size
============================================
Installing:
js x86_64 1:1.7.0-1.el5.rf dag 1.5 M
Transaction Summary
============================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 1.5 M
Is this ok [y/N]: y
・・・
Installed:
js.x86_64 1:1.7.0-1.el5.rf
Complete!
jsawkのインストール
jsawkをありがたくダウンロードさせていただく。
Downloads · micha/jsawk · GitHub
適当な場所に解凍する。
[root@xxx bin]# unzip micha-jsawk-1.2-2-g8f4112b.zip
jsawkはシェルスクリプトだ。
jsawkを解凍したディレクトリの中からパスが通ったところに移動させ、いらないファイルを削除しとく。
[root@xxx micha-jsawk-8f4112b]# mv jsawk ..
[root@xxx micha-jsawk-8f4112b]# rm *
[root@xxx micha-jsawk-8f4112b]# cd ..
[root@xxx bin]# rmdir micha-jsawk-8f4112b/
パーミッションを設定する。
[root@xxx bin]# chmod 700 jsawk
OAuthで返ってきたJSONの中からjsawkでアクセストークンを抽出してみる
のようにしてOAuthから返ってくるこのようなJSON
がパイプでjsawkに渡され、ACCESS_TOKENの部分が抽出されて標準出力に表示される。
ということは、これをシェルの変数にしたり、ファイルにしたりもできるということ。
ゴールが見えた!
琴線探査: Google DriveにCURLでアップロードするには?
最後の問題は、Google Drive APIやOAuthで返ってきたJSONをどうやってシェルスクリプトで処理するかだ。
そこで、「jsawk」を使わせてもらうことにした。
micha/jsawk · GitHub
SpiderMonkeyのインストール
jsawkは例の有名なコマンドラインのJavaScript実行環境「SpiderMonkey」が必要なので、まずこれからインストールする。
幸いにも、DAGにパッケージがあった。DAGリポジトリを使えるようにするにはこちら。
琴線探査: さくらのVPSをMond Rescueで丸ごとバックアップしてVMWare Fusionでリストアしてみた
[root@xxx ~]# yum install js --enablerepo=dag
・・・
Dependencies Resolved
============================================
Package Arch Version Repository Size
============================================
Installing:
js x86_64 1:1.7.0-1.el5.rf dag 1.5 M
Transaction Summary
============================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 1.5 M
Is this ok [y/N]: y
・・・
Installed:
js.x86_64 1:1.7.0-1.el5.rf
Complete!
jsawkのインストール
jsawkをありがたくダウンロードさせていただく。
Downloads · micha/jsawk · GitHub
適当な場所に解凍する。
[root@xxx bin]# unzip micha-jsawk-1.2-2-g8f4112b.zip
jsawkはシェルスクリプトだ。
jsawkを解凍したディレクトリの中からパスが通ったところに移動させ、いらないファイルを削除しとく。
[root@xxx micha-jsawk-8f4112b]# mv jsawk ..
[root@xxx micha-jsawk-8f4112b]# rm *
[root@xxx micha-jsawk-8f4112b]# cd ..
[root@xxx bin]# rmdir micha-jsawk-8f4112b/
パーミッションを設定する。
[root@xxx bin]# chmod 700 jsawk
OAuthで返ってきたJSONの中からjsawkでアクセストークンを抽出してみる
curl -X POST https://accounts.google.com/o/oauth2/token \
-d "code=CODE" \
-d "client_id=CLIENT_ID" \
-d "client_secret=CLIENT_SECRET" \
-d "redirect_uri=urn:ietf:wg:oauth:2.0:oob" \
-d "grant_type=authorization_code" \
| jsawk "return this.access_token"
のようにしてOAuthから返ってくるこのようなJSON
{
"access_token" : "ACCESS_TOKEN",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "REFRESH_TOKEN"
}
がパイプでjsawkに渡され、ACCESS_TOKENの部分が抽出されて標準出力に表示される。
ということは、これをシェルの変数にしたり、ファイルにしたりもできるということ。
ゴールが見えた!
コメント
コメントを投稿