Bash脚本命令不执行
问题描述:
我需要以下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]#
答
我最初只给sudo访问运行该贴bash脚本。问题不是脚本,而是权限。我需要额外的sudo访问权限才能在我的sudoers中运行iptables。固定。
它应该工作正常。是什么让你觉得它没有被执行? – Barmar
该规则未添加到netfilter。该规则不被iptables显示。 – user1801810
确保文件没有CRLF行尾。如果你在Windows上编辑Unix文件,使用'dos2unix'来修复它。 – Barmar