• ベストアンサー

iptableコマンドを複数記載したスクリプトを実行したいです。

Linuxのコマンドについてお聞きしたいです。 iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。 Windowsで下記のようなファイルを作成しました。 #!/bin/sh iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth0 -d 210.98.76.54 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -i eth1 -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -d 202.228.202.2 -p udp --sport 53 --dport 1024:65535 -j ACCEPT iptables -A INPUT -j LOG --log-prefix "### INPUT ###" iptables -A FORWARD -j LOG --log-prefix "### FORWARD ###" これをLinuxの/rootに作成したbinフォルダにフロッピーでコピーしました。 ファイル名をfilterにしたので、[root@linux root]# filter とし、Enterとし、 スクリプトを実行して設定を反映させようとしました。 しかし、: bad interpreter: そのようなファイルやディレクトリはありません と出てしまいます。 何が足りないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

スクリプトをWindowsで作成したからです. 改行コードに余分な<CR>があり,/bin/sh<CR>という コマンドは無いので,bad interpreter になります. dos2unix というコマンドが使えれば,簡単コードを 変換できます. まあ,今後のためには,Linux上でエディタを使える ようになることをお勧めします.

hotchan
質問者

補足

そういえば、そうゆうのを聞いたことがありました。 スクリプトを作成した時はコード変換されていないといけないんですね。 dos2unixをやってchmodで700に変更したらできました! ちなみにコード変換は、スクリプトに限らず、すべてのファイルに必要ですか? 私はよく、Windowsで作成したものをフロッピーでLinuxにコピーしてしまうのですが、これはだめなんですか? 例えば、ゾーンデータベースのファイルとか。。 2度目の質問のようになってしまいますが、良かったら教えて下さい。

その他の回答 (3)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.4

> コード変換は、スクリプトに限らず、すべてのファイル > に必要ですか? べつにそういうことは無いと思いますが,システム設定に かかるようなファイルの改行コードは,UNIX流にしておい た方が無難だと思います.

hotchan
質問者

お礼

そうなんですか。二度にわたる回答、有難うございました!

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

(追加) filterのある場所にパスは通っていますか? または ./filter とかしてみて下さい。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

>Windowsで下記のようなファイルを作成しました。 >これをLinuxの/rootに作成したbinフォルダにフロッピーでコピーしました。 改行コードは変換しましたか? 変換していないなら、nkfコマンドなどで変換して下さい。 実行権は与えましたか? chmodコマンドで実行権を付けて下さい。

hotchan
質問者

お礼

皆さん、ご回答、ありがとうございました!!

関連するQ&A