質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

2回答

801閲覧

slackのメッセージに反応してRaspberry Piにシェルスクリプトを実行させたい

sskm

総合スコア14

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2019/01/08 03:05

編集2019/01/10 05:36

遠隔で実行させたいシェルスクリプトがあるのですが、slackのメッセージに反応させたいです。
例えば、
「スクリプトを実行」
とチャンネル内で発言すると、raspberry piがスクリプトを実行し、実行結果をslackで返信する、
というシステムが作りたいです。
slack botを作ればよいのでしょうか。

何か方法や調べる取っ掛かりを教えていただけないでしょうか。

追記
回答いただいた https://qiita.com/KAKY/items/55e6c54fa2073cdc0bbe を参考に、Outgoing WebHooksを使おうとしたのですが、肝心な設定方法があいまいで、よくわかりません。
引き金に「test」、urlに「http://(ラズパイのipアドレス)」とだけ設定したのですが、チャンネルでtestと発言してもスクリプトが実行されません。
http://(ラズパイのipアドレス)に他のPCからブラウザでアクセスすると、スクリプトが実行されるところまではいきました。
Outgoing WebHooksの他の解説ページを見るとコードの書き方などが書いてありますが、上記ページではコードについては触れていません。
どうしたらチャンネルでの発言でスクリプトを実行できるでしょうか。

追記2
ご指摘いただいた通りipアドレスをプライベートアドレスで指定していました。
グローバルipアドレスにして試したところ、LAN内からでもLAN外からでもタイムアウトしてしまい、アクセスできませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/01/08 03:11

slackbotを作ればできると思うので、それがとっかかりにはなりませんか?
sskm

2019/01/08 04:08

ご意見ありがとうございます。 slackbotにも種類?があるのか、通信サーバの設定やらどの手順でやればいいのかわからず、 また、適したbotや他の手段もあればと思い質問しました。
papinianus

2019/01/08 06:07

編集追記された部分ですが質問が大幅にかわっているので、もはや別質問にしたほうがよいと思います。また、その際、どこまでできているのか、環境の補足が必須です。今のままでは例えば、そのipはグローバルipですよね?raspberryPiにはhttppostに対してリッスンしているサービスがいますよね?そのサービスで何らかのログを出すことはできませんか?など、確認すべき事項が多岐にわたります。
sskm

2019/01/08 06:15

失礼しました。環境について補足した上で別の質問で投稿し直します。 申し訳ありませんがログについてはどこを参照すればよいのかわかりません。 どうにか調べてみてから質問します。
papinianus

2019/01/08 06:20 編集

ログは自分で出すようにするものなので、探してもないです。apacheをつかっているみたいなので、アクセスログは出るかもしれませんが。個人的にはipが192.168ではじまっている「プライベートアドレス」と呼ばれるもので、それはインターネットからは開けない(例えばwifiでないスマホから接続してもスクリプトが動作しない)ものではないかということを疑っています。
guest

回答2

0

投稿2019/01/08 03:13

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sskm

2019/01/08 04:13

回答ありがとうございます。 いただいたページ、参考にしてみます。
sskm

2019/01/08 05:02

回答いただいたページを参考に、php7.0をインストールしたのですが、 ドキュメントルートにindex.phpを作成してもcurlでアクセスすると404 Not Foundと表示されています。 phpのバージョンの問題なのでしょうか。
can110

2019/01/08 06:04

apache,phpは疎いので分かりかねますが、まずはどちらも正常に動作するよう構築する必要あるかと思います。
guest

0

ベストアンサー

投稿を外部に通知したいということであれば「Outgoing Webhook」というキーワードで調べてみてください。

あるいはスラッシュコマンドを自作するという手もありますね。


回答いただいた https://qiita.com/KAKY/items/55e6c54fa2073cdc0bbe を参考に、Outgoing WebHooksを使おうとしたのですが、肝心な設定方法があいまいで、よくわかりません。

とっかかりは上記記事でできているはずなので、後はキーワードを参考に調べてみてはどうでしょう?
Qiitaの記事1つで全て上手くできることは稀なので、複数記事参考にしたり別なサイトを参考にしないと
やりたいことは実現できないかと思います。

引き金に「test」、urlに「http://(ラズパイのipアドレス)」とだけ設定したのですが、チャンネルでtestと発言してもスクリプトが実行されません。

おそらくIPアドレスはローカルのIPアドレスを設定されているのかと思います。
ちゃんと調べてませんが、Outgoing webhookは外部から指定されたIPアドレスにリクエストが飛ぶので
ローカルIPアドレスを指定してもできないのではないかと思います。

http://(ラズパイのipアドレス)に他のPCからブラウザでアクセスすると、スクリプトが実行されるところまではいきました。

同じネットワークからであればローカルIPアドレスでアクセスできます。
が、Outgoing Webhookは一つ前の理由からローカルIPアドレスではアクセスできないものと思われます。

Outgoing WebHooksの他の解説ページを見るとコードの書き方などが書いてありますが、上記ページではコードについては触れていません。

どうしたらチャンネルでの発言でスクリプトを実行できるでしょうか。

Qiita記事は誰が見てもわかることを保証できません。技術共有を目的としたサービスですので。
回答者の方もとっかかりとして挙げていられるだけですからね。
他の解説ページも参考にやりたいことを実現しましょう。

投稿2019/01/08 03:10

編集2019/01/08 07:17
dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sskm

2019/01/08 04:13

回答ありがとうございます。 「Outgoing Webhook」調べてみます。 スラッシュコマンドについても調べてみます。
sskm

2019/01/10 05:33

返事が遅れてしまってすみません。 確かにローカルipアドレスを指定していました。 グローバルipでアクセスしようとしたところタイムアウトしてしまいアクセスできませんでした。
papinianus

2019/01/10 05:40

グローバルIPはどうやって取得したのでしょうか?普通のご家庭にあるのですよね?ルータが噛んでると思いますが、Firewallの解放(そとから80に入れるようにする)とか、NAT(そのグローバルIPへの80ポートへのアクセスが、他のPCなどではなくRaspberryPiに行くようにする)とかできてますか?
dice142

2019/01/10 05:48

そのへんは詳しくないのですが、おそらくファイアウォール的なものか単にルータの設定が抜けているとかそういう感じじゃないかなと推測します。 サーバ設定が絡んでくるので、別でそこに焦点を当てた質問を立てたほうが新たに回答を得られやすい気がします。
sskm

2019/01/10 06:13

コメントありがとうございます。 グローバルipアドレスは"curl ifconfig.me"にて取得しました。 確かにルータを使っているのでアドレス変換しないといけませんでした。 一旦自分で調べてトライしてみます。 また躓いたら新たに質問を立てようと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問