概要
毎週土曜日にもくもく勉強会を開催しているが、始まる少し前に「zoomのURLを貼り付けて、メール文章を考えてメール送信」 この作業がめんどくさい。
って事で、定型分を作成してslackに自動送信出来る様にしよう!!っていう内容になっています。
■大まかな流れ
1.ファイルを作成して実行権限を付与
2.slackにIncoming Webhookを登録して設定
3.コード作成(zoom URL + メール文章)
4.cronの設定(ジョブスケジューリング)
1.ファイルを作成して実行権限を付与
まず、プログラムを書くファイルを作成します。私は土曜日に土曜日に実行するファイルなので、shellscriptディレクトリにSaturday_executeというファイルを作成しました。(./shellscript/Saturday_executeのパスはcronの設定で使います。)
では、Saturday_executeに権限を付与していきましょ。
■ディレクトリ内のファイル情報を表示する
$ ls -l #ディレクトリ内のファイル情報を表示する
-rw-r--r-- 1 ファイルの所有者名 ファイルの所属グループ ファイルサイズ 更新日時 Saturday_execute(ファイル名)
表示された情報の詳細
- 左の3文字 : 所有者のアクセス権限
- 中央3文字 : 所有グループのアクセス権限
- 右の3文字 : 所有者のアクセス権限
-r:読み込み可
- w:書き込み可
- x:実行可
- -:アクセス権限なし
所有者のアクセス権限の3文字目が「-」なので、実行権限がないのが分かりますね。
実行権限がないので実行権限を与えましょう。
■実行権限の付与
権限の変更にはchmodコマンドを使用します。
chmodの使い方とオプション
$ chmod u+x Saturday_execute #chmod 権限設定 ファイルパス
コマンド解説
記号 | 意味 |
---|---|
u | 所有者の権限 |
xは「■ディレクトリの情報を表示する」で説明しましたが、実行権限の事でしたね。
「Saturday_executeファイルの所有者に実行権限を付与する」という意味になります。
2. slackにIncoming Webhookを登録して設定
slackの左下に「Appの横にある+ボタン]からIncoming Webhookを検索します。
「設定を追加」をクリックします
通知をしたいチャンネルを選択し、「Incoming Webhook インテグレーションの追加」をクリックします。
Webhook URLをコードに埋め込んで使う為コピーしておきます。
これで設定完了!!
3.コード作成(zoom URL + メール文章)
Incoming WebhookのURL設定、slackの送信チャンネル、送信名、アイコン、メッセージを設定してcurlコマンドで送信する。
# !/bin/bash
#################################################################################
# 土曜日の朝に勉強会参加用のURLをメール送信
# 概要 : Incoming WebhookのURL設定、slackの送信チャンネル、送信名、アイコン、メッセージを設定してcurlコマンドで送信する。
# 実行日 : 毎週土曜日 9時55分
#################################################################################
# slackの「勉強会」チャンネルへ通知(Incoming WebHooksのURL)
WEBHOOKURL="コピーしたIncoming WebhookのURL"
###############################################################
# 固定文文字列の作成
###############################################################
# slack 送信チャンネル
CHANNEL="#勉強会"
# slack 送信名
BOTNAME="勉強会案内のお知らせ"
# slack アイコン
FACEICON=":snail:" #なめくじのアイコンを使用しています。設定を変更したい場合は「https://www.webfx.com/tools/emoji-cheat-sheet/」を使用。
# メッセージ内容
MESSAGE="今からもくもく勉強会を始めます。\n 下記のURLよりお入りください。\n ■時間:10時〜17時\n <zoom URL>"
curl -X POST --data-urlencode "payload={\"channel\": \"${CHANNEL}\", \"username\": \"${BOTNAME}\", \"icon_emoji\": \"${FACEICON}\", \"text\": \"${MESSAGE}\" }" ${WEBHOOKURL}
コード内容は文字列を変数に格納してcurlコマンドで送信しているだけ!!
・基本操作が分からない方は下記を参照!
シェルスクリプトの基本コマンド
・curlコマンドの使い方が分からない方は下記を参照!
curlコマンドのオプション
4.cronの設定(ジョブスケジューリング)
ここまできたら残すは「指定の時間に指定のプログラムを実行」する設定のみ!!
■ジョブスケジューリングは、指定の時間に指定のプログラムを自動実行する機能。下記の2種類
・cron
- 定期的に自動実行
- crondとcrontabコマンドで構成
・at - 1回だけ自動実行
- 標準入力でスクリプトを指定する
今回の実装は毎週通知なので、cronで行います。
それでは「/shellscript/Saturday_execute」ファイルを「毎週9時55分」に実行する様に設定して行きましょう。
$ crontab -e #eオプションを付けて起動

iでインサートモードに切り替えて下記を入力
# (分)(時)(日)(月)(曜日) 実行するコマンドのパス
55 9 * * sat bash ./shellscript/Saturday_execute #毎週土曜日の9時55分「Saturday_execute」ファイルを実行
# 入力後、escキー押して:wqで保存終了
escキー押して:wqで保存終了したら完成!!!
cronの詳細が分からない方は下記を参照してください。