2016-12-29 255 views
-1

我需要以下Bash v4.1.2腳本的幫助。Bash腳本命令不執行

#!/bin/bash 

IP=$1 
IPTABLES=/sbin/iptables 
$IPTABLES -I INPUT -s $IP -j DROP 
echo $IPTABLES -I INPUT -s $IP -j DROP |wall 

的變量,IPIPTABLES,獲取填充在echo但線以上不執行。回聲輸出...

/sbin/iptables -I INPUT -s 1.2.3.4 -j DROP

...這是語法正確的,如果手動執行工作。

我不知道Bash,所以我正在努力調試這個基本腳本。我看到一些場景,其中命令是空的,因爲我有我的和一些被包裝在$()(帶和不帶引號)。我也嘗試使用反引號並引用命令的各個部分。通過wall管道的echo只存在調試。

我在Bash script commands not working in cron找到了一個基本相同的帖子。儘管我的腳本沒有從cron運行。

===編輯===
增加對@Barmar

[[email protected] tmp]# bash -x /bin/netfilter-drop.sh 
+ IP=1.2.3.4 
+ IPTABLES=/sbin/iptables 
+ /sbin/iptables -I INPUT -s 1.2.3.4 -j DROP 
+ wall 
+ echo /sbin/iptables -I INPUT -s 1.2.3.4 -j DROP 
[[email protected] tmp]# 
Broadcast message from [email protected] (Thu Dec 29 12:46:44 2016): 

/sbin/iptables -I INPUT -s 1.2.3.4 -j DROP 
^C 
[[email protected] tmp]# 
+0

它應該工作正常。是什麼讓你覺得它沒有被執行? – Barmar

+0

該規則未添加到netfilter。該規則不被iptables顯示。 – user1801810

+0

確保文件沒有CRLF行尾。如果你在Windows上編輯Unix文件,使用'dos2unix'來修復它。 – Barmar

回答

0

我最初只給sudo訪問運行該貼bash腳本。問題不是腳本,而是權限。我需要額外的sudo訪問權限才能在我的sudoers中運行iptables。固定。