分かってる。これらの投稿は常に表示されます。私のマシン/コードは、これらの一見単純なスクリプトをセットアップしようとするときに、ほとんどの人が達成しようとしている/どのような問題に直面しているのかに対する例外です。
基本的にRuby gemを使用してJSONでhttp POSTを実行するIPdetermination.rb
Raspberry Pi(Raspbian OSを実行)で名前が付けられたファイルがあります。rest-client
コードは次のとおりです。
#sends a message to slack using incoming-webhook that identifies that
#host machine's name and ip address.
require 'rest-client'
address = Socket.ip_address_list.detect {|x| x.ipv4_private?}.ip_address
name = Socket.gethostname
if name.include? '.' then name = name.slice(0..name.index('.') - 1) end
payload = {text: "*Device:* `#{name}`\n *IP:* `#{address}`"}.to_json
RestClient.post 'https://hooks.slack.com/services/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', payload
これは機能することに注意してください。実際、この bash スクリプトは次の場所に保存されています。/etc/init.d
#! /bin/bash
# /etc/init.d/ip_addr
### BEGIN INIT INFO
# Provides: ip_addr
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ip address locator
# Description: sends hostname's ip address on private slack channel
### END INIT INFO
exec ruby ~/Documents/coding/ruby/IPdetermination.rb
exit 0
どちらも手動で実行すると機能し、Slack にメッセージを正常に投稿できます。スクリプトに LSB コメントを添付し、running が を返すip_addr
ようにファイルを構成したことに注意してください。正しく実行すると、 が表示されます。ls -l
-rwxr-xr-x 1 root root 413 Dec 30 03:39 ip_addr
chkconfig --list
ip_addr 0:off 1:off 2:on 3:on 4:on 5:on 6:off
まだ
うまくいきません!システムを再起動しても、スクリプトが実行されないようです。私の唯一の理論は、再起動時に POSTing に問題がある可能性があるということですが、これが問題の原因であるかどうかは判断できません。私は何をしますか?
編集: Required-Start:
andRequired-Stop:
を変更して、ブート機能も含めるようにしましたが、どちらも機能$network
し$named
ませんでした。