私はIpTablesのルールをリセットする非常に簡単なbashスクリプトを持っています。 bash変数を含む別の "Config-File"から構成パラメーターを読み取ります。したがって、私はキーワード "source"を使用します。Bashスクリプトの読み込みソースファイルの変数が表示されないこのようなファイルやディレクトリのエラーはありません
私は安定版パッケージでdebian Serverを実行しています。 バッシュはバージョンで実行されている
GNUのbashのバージョン4.3.30(1)-release(x86_64版-pc-linux-gnuのよう)
私は、debian-サーバー上でスクリプトを実行すると出力プリント次のテキスト:
: No such file or directoryptables
: No such file or directoryptables
: No such file or directoryptables
: No such file or directoryptables
: No such file or directoryptables
: No such file or directoryptables
: No such file or directoryp6tables
: No such file or directoryp6tables
: No such file or directoryp6tables
: No such file or directoryp6tables
: No such file or directoryp6tables
: No such file or directoryp6tables
ここ
バッシュスクリプトの内容:
#!/bin/bash
CONFIG=../config/easywall.cfg
if [ -f $CONFIG ];
then
source $CONFIG
fi
eval $IPTABLES -F
eval $IPTABLES -X
eval $IPTABLES -t nat -F
eval $IPTABLES -t nat -X
eval $IPTABLES -t mangle -F
eval $IPTABLES -t mangle -X
eval $IP6TABLES -F
eval $IP6TABLES -X
eval $IP6TABLES -t nat -F
eval $IP6TABLES -t nat -X
eval $IP6TABLES -t mangle -F
eval $IP6TABLES -t mangle -X
exit 0
と設定、ファイルの内容:
!/bin/bash
IPTABLES=/sbin/iptables
IP6TABLES=/sbin/ip6tables
は誰私はこのエラーを取得する理由を考えていますか?
いずれかのファイルに改行文字を含めることができます。 'od -c filename'を実行し、' \ r'文字を探します。また、 'eval'は役に立たず、セミコロンは役に立たず、'!/ bin/bash'には '#'がありません。キャリッジリターン文字を見つけたら、ファイルを 'dos2unix filename'でUnix行末に変換してください。 – Jens
'else echo"設定ファイルがありません! ";ファイルが見つかったかどうかを確認するために、 'if'文にexit 1を実行します。私は、configが読み込まれていないと思うし、スクリプトは空の変数を続けます。 'echo' $ IPTABLES ''と 'echo" $ IP6TABLES "'を追加して、 'source'が期待どおりに動いたかどうかを調べることもできます。 – Socowi
こんにちはジェンス!あなたの超高速な答えに感謝します。問題は、config-Fileの '\ r \ n'文字の問題です。 dos2unixでファイルを変換すると私にとってはうまくいった。 –