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

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

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

429閲覧

rubyを用いた処理の書き方

naonao11

総合スコア97

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2018/07/26 07:36

編集2018/11/02 02:47

開発環境:ubuntu 18.0.4

したいこと

fetchmailを用いてメールを取ってき,textProcessing.rbにメールの内容を入れ特定の処理を行い,csvファイルにFROM , 氏名 を取ってきたく思います。
まずはテキストファイルとして保存することから始めました。

fetchmailの設定内容について

set daemon 10800 defaults uidl no mimedecode no rewrite mda /home/name/process/textProcessing.rb # メールを渡すプログラムのフル>パス keep poll mail.example.jp protocol POP3 username example@example.jp password xxxxxxxx ssl

textProcessing.rbについて

ruby

1require 'mail' 2 3class GetMail 4 def initialize 5 dt = Time.now.strftime("%Y%m%d_%H%M%S%L") 6 @out_file = "/home/name/#{dt}.txt" 7 end 8 9 def execute 10 open(@out_file, "w") do |f| 11 mail = Mail.new($stdin.read) 12 f.puts "From: #{mail.from.first}" 13 f.puts "To: #{mail.to.first}" 14 f.puts "Date: #{mail.date}" 15 f.puts "Subject: #{mail.subject}" 16 f.puts "Body:\n#{mail.body.decoded.encode("UTF-8", mail.charset)}" 17 end 18 rescue => e 19 $stderr.puts "[#{e.class}] #{e.message}" 20 e.backtrace.each{|trace| $stderr.puts "\t#{trace}"} 21 exit 1 22 end 23end 24 25exit unless $0 == __FILE__ 26GetMail.new.execute

ですが、テキストファイルが排出してくれていません。
rubyについてまだ行い始めて1ヶ月なのでよくわかっていません。

ご助力のほどよろしくお願いします。。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

textProcessing.rbの1行目に、#!「rubyのフルパス」という行が必要です。
あと、ファイルに実行可能属性も必要です。chmod a+x textProcessing.rb

投稿2018/07/26 07:51

otn

総合スコア84555

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

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

naonao11

2018/07/26 08:13

なるほど、、ありがとうございます! それ以前の話になってしまいますが rubyなのですが、先程質問させていただいたruby導入でrubyが動いていたのですが今動かずになってしまってます… 再インストールした際に usr/bin/ruby のファイルは戻りましたが リンク先が存在しないシンボリックリンク となってコマンドが出てきません…
naonao11

2018/07/26 08:54 編集

rubyが動きました! rubyのfull pathというのは puts File::expand_path('/usr/bin/ruby') でよろしいでしょうか・・・?
otn

2018/07/26 12:57

bashプロンプトで、type ruby です。
naonao11

2018/07/27 00:40

bashプロンプトというと,.batファイルを作り「type ruby」を記述 そのファイルをrequireでrubyのファイルに読み込むということでしょうか…
naonao11

2018/07/27 00:59

またrubyの書き方としてもこれはあっているのでしょうか…
otn

2018/07/27 01:55

日本語が簡潔すぎたですね。 > bashプロンプトで、type ruby です。 bashのコマンドを打ち込む端末画面で、type ruby と打つと、rubyのフルパスが表示されます。
naonao11

2018/07/27 01:59

which ruby とは違うのでしょうか… またtype rubyと打ち込むと /usr/bin/rubyとでました そのため、1行目に puts File::expand_path('/usr/bin/ruby') と書くのでしょうか…
otn

2018/07/27 02:04

スクリプトの1行目に #!/usr/bin/ruby と書きます。こういうの見たこと無いですか? あとtypeとwhichはほぼ同じです。typeはBashの組み込みコマンド、whichは、/usr/bin/which という外部コマンド。
naonao11

2018/07/27 02:18

今調べたらありました、、確認不足でした。。。 なるほど、違いありがとうございます! Ruby script to get a mail via alias of postfix. というのもあったのですが、fetchmailの場合もこの文言はいるのでしょうか…?
otn

2018/07/27 02:30

> Ruby script to get a mail via alias of postfix. コメントでは?
naonao11

2018/07/27 02:31

なるほど。。。ありがとうございます! もっとRubyの勉強をします。。。
naonao11

2018/07/27 05:34

申し訳ございません。。 上記のコメント(#!/usr/bin/ruby)を入れ変更してfetchmailを起動させたのですが動きません… これはまだなにか違うのでしょうか…
naonao11

2018/07/27 05:45

未読メールは2つ(今日の09:12と12:12)はありました…
otn

2018/07/27 07:29

メッセージは何か出ていますか? また、最初からデーモンで起動していないでしょうね。デーモン化は正常に動くことが分かってからです。
naonao11

2018/07/27 07:32

sudo service fetchmail start として、 sudo service fetchmail status と確認したところ 7月 27 15:39:53 hashi-Vostro-3267 systemd[1]: Starting LSB: init-Script for system wide fetchmail daemon... 7月 27 15:39:53 hashi-Vostro-3267 fetchmail[8888]: * Not starting fetchmail daemon, disabled via /etc/default/fetchmail 7月 27 15:39:53 hashi-Vostro-3267 systemd[1]: Started LSB: init-Script for system wide fetchmail daemon. と出てきました・・・
otn

2018/07/27 07:36

いや、だから、デーモン化はするなと。
naonao11

2018/07/27 07:38

?? 申し訳ございません、理解不足でした… cron で動かすということでしょうか…?
otn

2018/07/27 07:44

いいえ、手動で動かせと言うことです。 デーモンにしたり、cronに登録したりするのは、テストして完全に動くことが分かってからです。
naonao11

2018/07/27 07:47

なるほど… テスト:コマンドに fetchmail 本番(テストがうまく行った場合) :sudo service fetchmail start ということでしょうか?
otn

2018/07/27 08:08

手動でうまく行けば、こういうメッセージが表示されます。 xxx 通のメッセージ (そのうち xxx 通は 既に読み込んでいます) がアカウント xxxxxx , サーバ xxxxxxx 宛に届いています (xxxxx バイト) うまく行かないとおそらくエラーメッセージが表示されると思います。
naonao11

2018/07/27 08:18

fetchmail: hoge@example.jp@example.jp 宛に届いた 19 番目のメッセージ(全部で 19 通)を読み込んでいます (2731 バイト) サーバからメッセージを削除しませんでした。 と出てきました!
otn

2018/07/27 08:38

それでメールを取り込んでプログラムを起動できたと思います。
naonao11

2018/07/27 08:40

なるほど! その次にデーモンってことなんですね!本当に1からありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問