Bash脚本命令不执行

时间:2016-12-29 18:29:14

标签: linux bash shell debugging iptables

我需要以下Bash v4.1.2脚本的帮助。

#!/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,所以我很难调试这个基本脚本。我看到一些情况,其中命令是裸露的,因为我有我的,而有些则包含在$()中(有和没有引号)。我也尝试过使用反引号并引用命令的各个部分。 echo管道wall仅用于调试。

我在Bash script commands not working in cron发现了一个基本相同的帖子。我的脚本不是从cron运行的。

===编辑===
为@Barmar添加

[root@server 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
[root@server tmp]# 
Broadcast message from root@server (Thu Dec 29 12:46:44 2016):

/sbin/iptables -I INPUT -s 1.2.3.4 -j DROP
^C
[root@server tmp]#

1 个答案:

答案 0 :(得分:0)

我最初只给了sudo访问权限来运行发布的Bash脚本。问题不是脚本,而是权限。我需要在我的sudoers中提供额外的sudo访问权限来运行iptables。固定的。