アプリ版:「スタンプのみでお礼する」機能のリリースについて

iptablesのチェイン、ルールを記述したシェルスクリプトファイルを作成し、
実行させ、iptablesに設定しています。

===スクリプト(test.sh)抜粋ここから===
#!/bin/bash

mail_smtp='eo.smtpaut.co.jp'
printer='192.168.11.11'

#maiil_smtpを利用したルール
iptables -A OUTPUT -p tcp -o eth0 -d $mail_smtp --dport 587 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


#プリンター変数を利用したルール
iptables -A FORWARD -s 10.0.0.0 -d $printer_ip -j ACCEPT

===スクリプト抜粋ここまで===


これを、sh test.sh で実行すると下記エラーが出ます。
「iptables v1.4.7: host/network `eo.smtpaut.co.jp' not found」(smtp変数の方)
※printer変数の方では何も出ていません。


コンソールから普通に、ping eo.smtpaut.co.jp で実行した際には名前解決ができるので、
シェルスクリプト実行時に、eo.smtpaut.co.jp の名前解決ができていないのだと思うのですが、
どのようにコードを書いたらいいかわかりません。(printer変数はIP直書きなので問題が出ない?)

考えている方法としては、

(1)eo.smtpaut.co.jp のIPを調べる
(2)(1)の結果のIPを「mail_smtp変数」に入れる。
(3)ルールで使用する?
(4)解決?

みたいなことを考えています。
ルールに、IP直書きするとプロバイダ変更等の際に、
まず、変数でサーバ名を宣言して、その変数をルールに使いたいのです。

ご教授お願いします。

A 回答 (2件)

>(1)eo.smtpaut.co.jp のIPを調べる


>(2)(1)の結果のIPを「mail_smtp変数」に入れる。

動的に変化するIPアドレスには対応できませんが……
hostコマンドやdigコマンドなどで正引きした結果を取得すればよいかと。
# 正引きした結果、複数のIPアドレスが返される場合は、個別にルールとして適用する必要があるでしょうけど。


まぁ、スクリプト実行時に正引きが出来ない。という状況ではどう対処したものか…ということになりかねませんが……。
# Redhat系で…iptablesの起動とnetwork(NetworkManager)の起動と、どっちが先でしたかねぇ……。
# rc.localとかに記述する。とか……。
    • good
    • 0
この回答へのお礼

>動的に変化するIPアドレスには対応できませんが……
hostコマンドやdigコマンドなどで正引きした結果を取得すればよいかと

これも考えたんですが、そうなるとPerlとかで加工する必要がありますよね。
でも、やっぱりそれしかないのかなぁ。って気もしてきました。

># rc.localとかに記述する。とか……。
ありがとうございます、参考にさせていただきます。

お礼日時:2013/10/25 20:20

ホストが見つからないというエラーなので、ホスト名を間違えています。



>コンソールから普通に、ping eo.smtpaut.co.jp で実行した際には名前解決ができるので、

エラーになりますよ。

この回答への補足

すみません。
質問する上で、サーバ名は架空の物に変更しております。
スクリプト上は、正しいサーバ名を記述しております。

補足日時:2013/10/25 02:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!