2016-12-14 25 views
0

ホームルータで動作する組み込みLinuxファームウェアがあります。ターミナルからrootで次のコマンドを1つずつ実行すると、エラーなく動作し、私の目的に役立ちます。私はこれが安全な方針ではないことを知っています。これは何かをテストすることだけです。bashスクリプトを使用してiptableエントリを変更するにはどうすればよいですか?

しかし
iptables -P INPUT ACCEPT 
iptables -P FORWARD ACCEPT 
iptables -P OUTPUT ACCEPT 
iptables -F 
iptables -X 
iptables -A INPUT -p tcp -i eth1 --dport 4444 -j ACCEPT 

、これは

#!/bin/bash 
iptables -P INPUT ACCEPT 
iptables -P FORWARD ACCEPT 
iptables -P OUTPUT ACCEPT 
iptables -F 
iptables -X 
iptables -A INPUT -p tcp -i eth1 --dport 4444 -j ACCEPT 

、以下のようにrootとしてbashスクリプトで実行される場合には、次のエラーを与える:

iptables: Bad policy name. Run `dmesg' for more information. 
iptables: Bad policy name. Run `dmesg' for more information. 
iptables: Bad policy name. Run `dmesg' for more information. 
iptables: No chain/target/match by that name. 
iptables: No chain/target/match by that name. 

私は最後の行ことを確認していますbashスクリプトはエラーなく実行され、エントリはiptablesで見ることができます。しかし、他のすべての行はエラーを投げます。私は間違って何をしていますか?驚いたことに、同じバッチスクリプトが私のUbuntuマシンで正常に動作します。

+0

root権限でシェルスクリプトをどのように実行しましたか?あなたはそれをどのように呼び出すのか教えていただけますか? – Inian

+0

ルーターには、既定の資格情報で実行されているTelnetサービスが付属していました。 –

答えて

2

は、Windowsで、またはそれをルータがUnixの改行(LF)を期待している、Windowsの行末(CRLF)を得た他のいくつかの方法でスクリプトを作成しましたか?

示すエラーを与えるコマンドのそれぞれの端に余分な印刷不能文字を読んで通訳につながります。

あなたはcat -v myScript.shを実行することで確認することができます。間違ったWindowsの行末は、次のように表示されます:

iptables -P INPUT ACCEPT^M 
iptables -P FORWARD ACCEPT^M 
iptables -P OUTPUT ACCEPT^M 
iptables -F^M 
iptables -X^M 
iptables -A INPUT -p tcp -i eth1 --dport 4444 -j ACCEPT 
+0

本当にありがとう!それはまさに問題でした! –

関連する問題