2016-12-14 7 views
0

가정용 라우터에서 실행되는 내장형 Linux 펌웨어가 있습니다. 루트에서 터미널에서 다음 명령을 하나씩 실행할 때 오류없이 작동하고 내 용도로 사용됩니다. 나는 이것이 안전한 정책이 아니라는 것을 안다. 이것은 단지 뭔가를 테스트하는 것입니다. 이것은 다음과 같이 루트로 bash는 스크립트에서 실행 그러나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 

는 다음과 같은 오류를 제공가 :

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에서 볼 수 있습니다. 그러나 다른 모든 행은 오류를 발생시킵니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 놀랍게도 동일한 배치 스크립트가 내 우분투 컴퓨터에서 잘 작동합니다.

+0

어떻게 루트 권한으로 쉘 스크립트를 실행 했습니까? 어떻게 호출했는지 알려 주실 수 있습니까? – Inian

+0

라우터는 기본적으로 기본 자격 증명을 사용하여 실행중인 텔넷 서비스와 함께 제공되었습니다. –

답변

2

Windows에서 스크립트를 만들었습니까? 아니면 라우터가 Unix line endings (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

정말 고마워요! 그게 정확히 문제 였어! –