SlideShare ist ein Scribd-Unternehmen logo
1 von 11
USP 友の会・シェル芸勉強会 LT - 2014/02/15

curl で iPhone にプッシュ通知しよう
日本 GNU AWK ユーザー会
斉藤 博文
hi_saito@yk.rim.or.jp
@hi_saito
Page 1

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

iPhone 用プッシュアプリ
名前
imkayac

ここが○
 API が簡単

PUSH

 HTML 利用可能

Pushover

 iOS7 ライクな
UI
 IFTTT 連携可能

ここが×
 他人からプッシュ
されてしまう
 iOS7 っぽくない
 操作性が若干悪い

一長一短あるが Pushover が無難
Page 2

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

Pushover の見た目
 iOS7 に合った UI。
 アイコンを API Token で使い
分けることが可能。
 様々な情報を一括表示または
個別表示可能。。

常に使うアプリは見た目も重要
Page 3

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

問題はパラメータ数
 この手の API はパラメータが多いのが特徴。
 毎回入力するのは面倒。
curl -s -F "token=${token}"
-F "title=${title}"

-F "user=${user}"

-F "prioriy=${prioriy}"




-F "message=${message}" -F "timespamp=${timespamp}" 
-F "sound=${sound}"

https://api.pushover.net/1/messages.json

関数化して簡略化したいよね
Page 4

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

入力はヒアドキュメント
 複数行を送信したい場合もあるので、変数を
引数にするよりもファイルを引数にした方が
便利。

cat <<TXT > push.txt
1
# 優先度
a*****************************
# API Token
u*****************************
# User Key
タイトル
# タイトル
本文
# 本文
TXT

ヒアドキュメント使っていますか?
Page 5

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

関数化部分 - その 1
 関数内の declare は local と同義でローカル
変数として定義される。
declare push_txt=${1}
declare prioriy=$(awk 'NR == 1' ${push_txt})
declare token=$(awk 'NR == 2' ${push_txt})
declare user=$(awk 'NR == 3' ${push_txt})
declare title=$(awk 'NR == 4' ${push_txt})
declare message=$(awk 'NR >= 5' ${push_txt})
declare timestamp=$(date '+%s')
declare sound="pushover"

決め打ちだけど、自分が分かれば OK
Page 6

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

関数化部分 - その 2
 変数定義されたものを curl で送信するだけの
簡単なお仕事です。
curl -s -F "token=${token}" -F "user=${user}"

-F "title=${title}" -F "prioriy=${prioriy}" 
-F "message=${message}" -F "timespamp=${timespamp}" 
-F "sound=${sound}"

https://api.pushover.net/1/messages.json > /dev/null

もちろん wget でも可能
Page 7

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

関数化部分 - 完成
SEND_PUSHOVER() {
declare push_txt=${1}
declare prioriy=$(awk 'NR == 1' ${push_txt})
declare token=$(awk 'NR == 2' ${push_txt})
declare user=$(awk 'NR == 3' ${push_txt})
declare title=$(awk 'NR == 4' ${push_txt})
declare message=$(awk 'NR >= 5' ${push_txt})
declare timestamp=$(date '+%s')
declare sound="pushover"

}

curl -s -F "token=${token}" -F "user=${user}"

-F "title=${title}" -F "prioriy=${prioriy}" 
-F "message=${message}" -F "timespamp=${timespamp}" 
-F "sound=${sound}"

https://api.pushover.net/1/messages.json > /dev/null

Page 8

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

関数の呼び出し
cat <<TXT > push.txt
1
a*****************************
u*****************************
USP Magazine 原稿の件
締め切りまであと 5 日ですが、
進捗はどうですか? by ☆
TXT
SEND_PUSHOVER push.txt

引数にヒアドキュメントのファイルを指定
Page 9

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

デモ

Page 10

http://gauc.no-ip.org/awk-users-jp/
USP 友の会・シェル芸勉強会 LT - 2014/02/15

何に使っている?
 注意報・警報の通知
 雨量情報の通知
 特定の人から来たメールの通知
 気になるキーワードを含むツィートの通知
 システムのアップデート結果

 サーバー異常等の報告
 IFTTT からの通知
Page 11

http://gauc.no-ip.org/awk-users-jp/

Weitere ähnliche Inhalte

Mehr von 博文 斉藤

 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04博文 斉藤
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!博文 斉藤
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料博文 斉藤
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」博文 斉藤
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう博文 斉藤
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028博文 斉藤
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413博文 斉藤
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall博文 斉藤
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall博文 斉藤
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 

Mehr von 博文 斉藤 (13)

 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 

curl で iPhone にプッシュ通知しよう

  • 1. USP 友の会・シェル芸勉強会 LT - 2014/02/15 curl で iPhone にプッシュ通知しよう 日本 GNU AWK ユーザー会 斉藤 博文 hi_saito@yk.rim.or.jp @hi_saito Page 1 http://gauc.no-ip.org/awk-users-jp/
  • 2. USP 友の会・シェル芸勉強会 LT - 2014/02/15 iPhone 用プッシュアプリ 名前 imkayac ここが○  API が簡単 PUSH  HTML 利用可能 Pushover  iOS7 ライクな UI  IFTTT 連携可能 ここが×  他人からプッシュ されてしまう  iOS7 っぽくない  操作性が若干悪い 一長一短あるが Pushover が無難 Page 2 http://gauc.no-ip.org/awk-users-jp/
  • 3. USP 友の会・シェル芸勉強会 LT - 2014/02/15 Pushover の見た目  iOS7 に合った UI。  アイコンを API Token で使い 分けることが可能。  様々な情報を一括表示または 個別表示可能。。 常に使うアプリは見た目も重要 Page 3 http://gauc.no-ip.org/awk-users-jp/
  • 4. USP 友の会・シェル芸勉強会 LT - 2014/02/15 問題はパラメータ数  この手の API はパラメータが多いのが特徴。  毎回入力するのは面倒。 curl -s -F "token=${token}" -F "title=${title}" -F "user=${user}" -F "prioriy=${prioriy}" -F "message=${message}" -F "timespamp=${timespamp}" -F "sound=${sound}" https://api.pushover.net/1/messages.json 関数化して簡略化したいよね Page 4 http://gauc.no-ip.org/awk-users-jp/
  • 5. USP 友の会・シェル芸勉強会 LT - 2014/02/15 入力はヒアドキュメント  複数行を送信したい場合もあるので、変数を 引数にするよりもファイルを引数にした方が 便利。 cat <<TXT > push.txt 1 # 優先度 a***************************** # API Token u***************************** # User Key タイトル # タイトル 本文 # 本文 TXT ヒアドキュメント使っていますか? Page 5 http://gauc.no-ip.org/awk-users-jp/
  • 6. USP 友の会・シェル芸勉強会 LT - 2014/02/15 関数化部分 - その 1  関数内の declare は local と同義でローカル 変数として定義される。 declare push_txt=${1} declare prioriy=$(awk 'NR == 1' ${push_txt}) declare token=$(awk 'NR == 2' ${push_txt}) declare user=$(awk 'NR == 3' ${push_txt}) declare title=$(awk 'NR == 4' ${push_txt}) declare message=$(awk 'NR >= 5' ${push_txt}) declare timestamp=$(date '+%s') declare sound="pushover" 決め打ちだけど、自分が分かれば OK Page 6 http://gauc.no-ip.org/awk-users-jp/
  • 7. USP 友の会・シェル芸勉強会 LT - 2014/02/15 関数化部分 - その 2  変数定義されたものを curl で送信するだけの 簡単なお仕事です。 curl -s -F "token=${token}" -F "user=${user}" -F "title=${title}" -F "prioriy=${prioriy}" -F "message=${message}" -F "timespamp=${timespamp}" -F "sound=${sound}" https://api.pushover.net/1/messages.json > /dev/null もちろん wget でも可能 Page 7 http://gauc.no-ip.org/awk-users-jp/
  • 8. USP 友の会・シェル芸勉強会 LT - 2014/02/15 関数化部分 - 完成 SEND_PUSHOVER() { declare push_txt=${1} declare prioriy=$(awk 'NR == 1' ${push_txt}) declare token=$(awk 'NR == 2' ${push_txt}) declare user=$(awk 'NR == 3' ${push_txt}) declare title=$(awk 'NR == 4' ${push_txt}) declare message=$(awk 'NR >= 5' ${push_txt}) declare timestamp=$(date '+%s') declare sound="pushover" } curl -s -F "token=${token}" -F "user=${user}" -F "title=${title}" -F "prioriy=${prioriy}" -F "message=${message}" -F "timespamp=${timespamp}" -F "sound=${sound}" https://api.pushover.net/1/messages.json > /dev/null Page 8 http://gauc.no-ip.org/awk-users-jp/
  • 9. USP 友の会・シェル芸勉強会 LT - 2014/02/15 関数の呼び出し cat <<TXT > push.txt 1 a***************************** u***************************** USP Magazine 原稿の件 締め切りまであと 5 日ですが、 進捗はどうですか? by ☆ TXT SEND_PUSHOVER push.txt 引数にヒアドキュメントのファイルを指定 Page 9 http://gauc.no-ip.org/awk-users-jp/
  • 10. USP 友の会・シェル芸勉強会 LT - 2014/02/15 デモ Page 10 http://gauc.no-ip.org/awk-users-jp/
  • 11. USP 友の会・シェル芸勉強会 LT - 2014/02/15 何に使っている?  注意報・警報の通知  雨量情報の通知  特定の人から来たメールの通知  気になるキーワードを含むツィートの通知  システムのアップデート結果  サーバー異常等の報告  IFTTT からの通知 Page 11 http://gauc.no-ip.org/awk-users-jp/