アーカイブ

‘Linux’ カテゴリーのアーカイブ

Shellスクリプトをデバッグ(ステップ実行)する

2013 年 12 月 28 日 コメントはありません

Shellスクリプトのテストを行う際に、1行1行処理をステップ実行して動作確認したい場合があります。
trapコマンドを使用したデバッグ方法を紹介します。

trapコマンド

trapコマンドは、指定したシグナルが発生した際に、特定のコマンドを実行するためのコマンドです。

■構文

trap [コマンド] [シグナル ...]

ステップ実行

Shellスクリプトが1行実行されるたびに、DEBUGシグナルが発生します。
trapコマンドでDEBUGシグナルを補足することで、ステップ実行をすることができます。

Shellスクリプトの冒頭に以下のコマンドを追加します。

■コマンド

trap ‘read -p “$0($LINENO) $BASH_COMMAND”‘ DEBUG

DEBUGシグナルが発生した際に、readコマンドを実行してコマンドプロンプトからの入力を待ちます。
readコマンドの-pオプションで、プロンプトに実行しているプロセス名($0)と行番号($LINENO)、実行しているコマンド($BASH_COMMAND)を表示します。

Shellスクリプトには以下のように追加します。

■test.sh

#!/bin/sh

trap 'read -p "$0($LINENO) $BASH_COMMAND"' DEBUG

echo Hello!
echo Good Bye!

実行すると以下のように1行毎にプロンプトが表示されます。

# ./test.sh
./test.sh(5) echo Hello!
Hello!
./test.sh(6) echo Good Bye!
Good Bye!

シグナルを補足しないようにするには以下のようにtrapコマンドを実行します。

trap – DEBUG

以上です。


カテゴリー: Linux タグ: ,

CentOS6.3にメールサーバ(SMTPサーバ)Sendmailを構築する

2013 年 10 月 10 日 コメントはありません

SendmailはUNIXで古くから使われてきたメールサーバソフトウェアです。オープンソース版のSendmailは数多くのディストリビューションに含まれていて、デファクトスタンダードのメールサーバーソフトウェアとして使用されてきました。

インストール

ほとんどのディストリビューションで、標準的にインストールされていると思います。

インストール確認

# yum list | grep sendmail
sendmail.x86_64 8.14.4-8.el6 installed
sendmail-cf.noarch 8.14.4-8.el6 installed

設定

Sendmailの設定方法。

設定ファイル
Sendmailの設定ファイルは、/etc/mailディレクトリに格納されています。

# ll /etc/mail
合計 280
-rw-r–r– 1 root root 92 5月 20 20:12 2009 Makefile
-rw-r–r– 1 root root 469 5月 20 20:12 2009 access
-rw-r—– 1 root root 12288 6月 9 10:00 2012 access.db
-rw-r–r– 1 root root 0 6月 9 10:00 2012 aliasesdb-stamp
-rw-r–r– 1 root root 233 4月 12 23:35 2007 domaintable
-rw-r—– 1 root root 12288 6月 9 10:00 2012 domaintable.db
-rw-r–r– 1 root root 5584 11月 12 04:36 2010 helpfile
-rw-r–r– 1 root root 64 4月 12 23:35 2007 local-host-names
-rw-r–r– 1 root root 997 4月 12 23:35 2007 mailertable
-rw-r—– 1 root root 12288 6月 9 10:00 2012 mailertable.db
-rwxr-xr-x 1 root root 2700 5月 20 20:12 2009 make
-rw-r–r– 1 root root 58439 11月 12 04:36 2010 sendmail.cf
-rw-r–r– 1 root root 58439 11月 12 04:36 2010 sendmail.cf.org
-rw-r–r– 1 root root 7237 10月 10 01:13 2013 sendmail.mc
-rw-r–r– 1 root root 7202 5月 20 20:12 2009 sendmail.mc.org
-rw-r–r– 1 root root 41521 11月 12 04:36 2010 submit.cf
-rw-r–r– 1 root root 941 11月 12 04:35 2010 submit.mc
-rw-r–r– 1 root root 127 4月 12 23:35 2007 trusted-users
-rw-r–r– 1 root root 1847 4月 12 23:35 2007 virtusertable
-rw-r—– 1 root root 12288 6月 9 10:00 2012 virtusertable.db

この中でメインの設定ファイルは「sendmail.cf」ですが、設定がとても複雑なため
通常はM4マクロ言語で「sendmail.mc」というファイルに設定を記述してから
実際の「sendmail.cf」ファイルを生成します。

sendmail.cfファイルの生成
「sendmail.mc」で設定を変更した際には、以下のコマンドを実行して「sendmail.cf」ファイルを生成します。

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

sendmail.mcの設定

SMTP接続を外部から受ける設定
デフォルトでは、127.0.0.1のSMTPポート(25番ポート)でLISTENするように設定されています。
このままでは、他のネットワークから接続できないため、この設定を削除して全てのネットワークインターフェースのSMTPポートでLISTENするように設定変更します。
(※dnlを付けると、コメント行として見なされます。)

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA’)dnl

ドメイン名の設定
メール送信時に設定されるドメイン名を設定します。

LOCAL_DOMAIN(`oss-lab.net’)dnl

設定を変更したら、m4マクロで、cfファイルを生成します。

メール受信ドメインの設定

/etc/mail/local-host-namesの設定
sendmailは、このファイルに設定されたドメイン宛のメールを自分宛のメールとして処理します。
このファイルに設定されていない宛先へのメールは他のMTAへリレーします。

# cat local-host-names
# local-host-names – include all aliases for your machine here.
oss-lab.net

アクセス制限

/etc/mail/accessの設定
どのネットワークからのアクセスを許可するか設定を行います。

# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# If you want to use AuthInfo with “M:PLAIN LOGIN”, make sure to have the
# cyrus-sasl-plain package installed.
#
# By default we allow relaying from localhost…
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY

access.dbへの設定反映
以下のコマンドを実行して設定を反映します。

makemap hash /etc/mail/access.db < /etc/mail/access

Sendmail起動

設定が完了したら、Sendmailを起動します。

alternativesの設定
postfixがデフォルトのMTAとして設定されている場合があります。
以下のコマンドで、デフォルトのMTAとしてSendmailを選択します。

# alternatives –config mta

2 プログラムがあり ‘mta’ を提供します。

選択 コマンド
———————————————–
* 1 /usr/sbin/sendmail.sendmail
+ 2 /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1

postfixサービス停止
postfixが起動している場合はサービスを停止します。

# service postfix stop

sendmailサービス開始

# service sendmail start

■参考ページ

http://futuremix.org/2003/05/sendmail
http://www.server-memo.net/server-setting/sendmail/sendmail-setting
http://www.ki.nu/software/cf/cf.html


カテゴリー: Linux, メールサーバ タグ: ,

CentOS6.3にメールサーバ(POP3/IMAP4サーバ)dovecotを構築する

2013 年 7 月 23 日 コメントはありません

受信メールサーバは、POP3とIMAP4と呼ばれるプロトコルで、クライアントから受信メールを読み出しできるようにするサーバです。

POP3/IMAP4サーバdovecotの構築を行います。

dovecotのインストール

yumコマンドでdovecotをインストールします

# yum install dovecot

dovecotの設定

dovecotの設定は「/etc/dovecot/dovecot.conf」に行います。

# vi /etc/dovecot/dovecot.conf

プロトコルの設定
dovecotで提供するプロトコルを設定します。

# Protocols we want to be serving.
protocols = imap pop3 lmtp

dovecotの起動と自動起動設定

# service dovecot start
# chkconfig dovecot on

カテゴリー: Linux, オープンソース, メールサーバ タグ:

CentOS6.3にメールサーバ(SMTPサーバ)Postfixを構築する

2013 年 7 月 22 日 コメントはありません

メールサーバは、メール転送を行う送信メールサーバ(MTA [Mail Transfer Agent] )と、受信したメールを参照するための受信メールサーバで構成されます。

送信メールサーバは、SMTPと呼ばれるプロトコルで、メールの転送を行うため、SMTPサーバとも呼ばれます。

SMTPサーバのデファクトスタンダードであるsendmailよりも、セキュリティやパフォーマンスに優れているPostfixの構築を行います。

Postfixのインストール

yumコマンドでPostfixのインストールを行います。

# yum install postfix

利用するMTAを変更する

RedHat系のOSでは、標準利用するMTAプログラムをalternativesコマンドで切り替える事ができます。
デフォルトではsendmailが選ばれていると思いますので、インストールしたPostfixに切り替えます。

# alternatives –config mta2 プログラムがあり ‘mta’ を提供します。

選択 コマンド
———————————————–
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

Postfixの設定

Postfixの主な設定は「/etc/postfix/main.cf」に行います。

# vi /etc/postfix/main.cf

ホスト名の設定
myhostnameにサーバーのホスト名を設定します。

myhostname = oss-lab.net

ドメイン名の設定
mydomainにドメイン名を設定します。

mydomain = oss-lab.net

Listenするインターフェース設定
複数のインターフェースがある場合に、どのインターフェースでListenするか指定する。

inet_interfaces = all

メール中継元クライアントの設定
ローカルホストからのメール送信のみ許可

mynetworks_style = host

受信メール設定
メールを転送せずに受信するメールの設定。@以降がマッチすると自身宛のメールと判断して受け取る。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

sendmail停止と自動起動の停止の設定

sendmailが起動している場合、停止します。

# service sendmail stop
# chkconfig sendmail off

postfix起動と自動起動の設定

Postfixを起動して、自動起動の設定を行います。

# service postfix start
# chkconfig postfix on

■参考ページ

Postfix基本設定


rvmを使ってrubyをインストール

2013 年 7 月 1 日 コメントはありません

CentOS6.3にrvmを使ってrubyをインストールします。

rvmは(Ruby enVironment Manager)の略で、rubyに必要なライブラリをインストールしたり、1つの環境に複数バージョンのrubyをインストールしたりできるようにするプログラムです。
>rvmのインストール方法はこちら。

インストール可能なプログラムの一覧を表示する

rvm list known

# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p371]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p320]
[ruby-]1.9.3-p125
[ruby-]1.9.3-p194
[ruby-]1.9.3-p286
[ruby-]1.9.3-p327
[ruby-]1.9.3-p362
[ruby-]1.9.3-p374
[ruby-]1.9.3-p385
[ruby-]1.9.3-p392
[ruby-]1.9.3[-p429]
[ruby-]1.9.3-head
[ruby-]2.0.0-rc1
[ruby-]2.0.0-rc2
[ruby-]2.0.0-p0
[ruby-]2.0.0[-p195]
ruby-head

# GoRuby
goruby

# Topaz
topaz

# TheCodeShop - MRI experimental patches
tcs

# jamesgolick - All around gangster
jamesgolick

# Minimalistic ruby implementation - ISO 30170:2012
mruby[-head]

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.5.1
jruby-1.6.6
jruby-1.6.7.2
jruby-1.6.8
jruby[-1.7.4]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.testing
rbx-2.0.0-rc1

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head

# Opal
opal

# IronRuby
ironruby[-1.1.3]
ironruby-head
#

rubyをインストールする

rvm install <<インストールするrubyのバージョン>>

# rvm install 1.9.3
Searching for binary rubies, this might take some time.
No binary rubies available for: centos/6.3/x86_64/ruby-1.9.3-p429.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Installing requirements for centos, might require sudo password.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-1.9.3-p429, this may take a while depending on your cpu(s)...
ruby-1.9.3-p429 - #downloading ruby-1.9.3-p429, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9806k  100 9806k    0     0  1422k      0  0:00:06  0:00:06 --:--:-- 1496k
ruby-1.9.3-p429 - #extracting ruby-1.9.3-p429 to /usr/local/rvm/src/ruby-1.9.3-p429
ruby-1.9.3-p429 - #extracted to /usr/local/rvm/src/ruby-1.9.3-p429
ruby-1.9.3-p429 - #configuring.............................................................................................................................................................................................................................................................................................................................................................................................................................................................
ruby-1.9.3-p429 - #compiling..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
ruby-1.9.3-p429 - #installing ............................................................................................................................................................................................................................................
Retrieving rubygems-1.8.25
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  371k  100  371k    0     0   792k      0 --:--:-- --:--:-- --:--:-- 2692k
Extracting rubygems-1.8.25 ...
Removing old Rubygems files...
Installing rubygems-1.8.25 for ruby-1.9.3-p429.....................
Installation of rubygems completed successfully.
Saving wrappers to '/usr/local/rvm/wrappers/ruby-1.9.3-p429'........

ruby-1.9.3-p429 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.3-p429 - #importing default gemsets, this may take time.......................
Install of ruby-1.9.3-p429 - #complete 

#

デフォルトで使用するrubyを選択する

rvm use <<使用するrubyのバージョン>>

# rvm use 1.9.3
Using /usr/local/rvm/gems/ruby-1.9.3-p429
# 
# ruby -v
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]
# 

カテゴリー: Linux, ruby, 開発 タグ: ,