hubot(slack)でcronをまわして定期的にslackの任意のチャンネルにshellの出力結果を吐き出したいのですが、coffee scriptの書き方が今ひとつわかりません。
module.exports = (robot) -> cronJob = new cronJob('*/10 * * * *', () -> envelope = room: "general" @exec = require('child_process').exec command = "/hoge_hubot/scripts/shell/hoge.sh" msg.send "Command: #{command}" @exec command, (error, stdout, stderr) -> msg.send error if error? msg.send stdout if stdout? msg.send stderr if stderr? ) cronJob.start()
こんな感じでかいたみたのですが、実行されていないようでどこか間違っているような気がします。
アドバイスお願い致します。。
追記: coffee scriptを書き換えてみました。
cron = require('cron').CronJob module.exports = (robot) -> new cron '*/1 * * * *', () => @exec = require('child_process').exec command = "/hoge_hubot/scripts/shell/hoge.sh" @exec command, (error, stdout, stderr) -> robot.send {room: "#general"}, "stdout" , null, true, "Asia/Tokyo"
これでshellの実行結果がslackに投稿されれば良いのですが、stdoutの部分が展開されず、文字列として表示されてしまいます。。。
(error,stdout,stderr)の部分がどういうものなのか理解しきれていないのですが、以下のようなコードの場合は動作するので、参考にしてみたもののも上手くいきません_| ̄|○
module.exports = (robot) -> robot.respond /artisan_up/, (msg) -> @exec = require('child_process').exec command = "/hoge_hubot/scripts/shell/hoge.sh" msg.send "Command: #{command}" @exec command, (error, stdout, stderr) -> msg.send error if error? msg.send stdout if stdout? msg.send stderr if stderr?
追記2:shell(hoge.sh)については以下のとおりです。
logwatch --print
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。