2014-04-10 20 views
5

Tôi có tập lệnh bash sau đây để đọc nhật ký và kiểm tra lực lượng vũ phu sau đó chặn vi phạm IP bằng iptables.Lệnh tập lệnh Bash không hoạt động trong cron

#!/bin/bash 
#blah blah run some commands to get the IP 
iptables -A INPUT -s $p -j REJECT --reject-with icmp-host-prohibited 
echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 

Tôi đã chmod 755. Khi tôi chạy lệnh từ thiết bị đầu cuối, nó hoạt động tốt. Nhưng khi tôi thiết lập một cronjob bằng cách sử dụng crontab -e làm thư mục gốc, nó nhận được IP và lặp lại thông điệp "BANNED ..." cho tường nhưng không có gì được thêm vào danh sách iptables.

PS. Tôi đã thử cả #!/bin/bash#!/bin/sh nhưng không may mắn.

+0

tại sao bạn cần phải thêm iptables quy tắc trong cron, nếu bạn muốn thêm iptables rulesand bạn muốn họ kiên trì, bạn có thể thêm chúng tới/etc/sysconfig/iptables hoặc rc.local –

+0

Bạn cần đặt đúng PATH để tìm 'iptables'. –

+0

yêu cầu khởi động lại dịch vụ iptables? –

Trả lời

12

Cố gắng cung cấp đường dẫn đầy đủ tới iptables, ví dụ:

$ which iptables 
/sbin/iptables 

và hơn sửa đổi kịch bản của bạn như thế: \

#!/bin/bash 
#blah blah run some commands to get the IP 
/sbin/iptables -A INPUT -s $p -j REJECT --reject-with icmp-host-prohibited 
echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 
+0

Hoạt động cảm ơn bạn! –

0

Hãy thử giải pháp sau đây sẽ làm việc cho bạn:

cat cronjob 
* * * * * /path/to/script.sh 

Sau đó:

chmod +x cronjob 
chmod +x script.sh 

/etc/init.d/crond start #redhat based servers like centos 
/etc/init.d/cron start #debian based servers like ubuntu 

crontab cronjob 

Chú ý: Đôi khi bạn cần phải nhập đường dẫn đầy đủ của lệnh iptables nếu quy tắc của bạn không được thêm vào /etc/sysconfig/iptables .

+0

Mặc dù đây là một giải pháp tổng quát và thú vị hơn, tôi không nghĩ rằng đó là vấn đề về cấu hình cronjob, nhưng trên đường dẫn của các tập lệnh. – fedorqui

+0

Có..đường dẫn của tập lệnh và đường dẫn của lệnh iptables có thể là vấn đề – MLSC

Các vấn đề liên quan