-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
的變量,IP
和IPTABLES
,獲取填充在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]#
它應該工作正常。是什麼讓你覺得它沒有被執行? – Barmar
該規則未添加到netfilter。該規則不被iptables顯示。 – user1801810
確保文件沒有CRLF行尾。如果你在Windows上編輯Unix文件,使用'dos2unix'來修復它。 – Barmar