Tôi đã đưa ra một kịch bản tuyệt vời sẽ tạo ra kết quả mà tôi cần, nhưng nó chỉ hiển thị trên màn hình, vì vậy tôi phải sao chép, sau đó dán vào các lệnh để làm cho chúng thực thi. Đây là phiên bản rút gọn của kịch bản của tôi:Tôi có thể sử dụng ECHO để thực thi các lệnh không?
#!/bin/bash
runc=/etc/csf/csf.pl -d
for IP in `tail -400 iptext.txt`
do
cc=`geoiplookup $IP`
echo -e $runc $IP $cc | grep Algeria
echo -e $runc $IP $cc | grep Argentina
echo -e $runc $IP $cc | grep Armenia
echo -e $runc $IP $cc | grep Azerbaijan
echo -e $runc $IP $cc | grep Bolivia
echo -e $runc $IP $cc | grep Brazil
done
Được rồi, vì vậy nó vòng qua danh sách các địa chỉ IP trong iptext.txt, sau đó thực hiện một tra cứu geoIP trên mỗi, if (trong ví dụ này) có hai geoIP phù hợp trong danh sách, hãy nói cho Armenia và Brazil, tôi sẽ thấy kết quả như thế này để các cửa sổ shell:
/etc/csf/csf.pl -d 46.162.242.17 GeoIP Country Edition: AM, Armenia
/etc/csf/csf.pl -d 200.147.38.50 GeoIP Country Edition: BR, Brazil
này là rất tốt, nhưng tôi muốn nhiều hơn chỉ là đầu ra, tôi thực sự muốn lệnh /etc/csf/csf.pl -d
để chạy, và chặn (chỉ và duy nhất) IP trong các dòng khớp với tên quốc gia, trong danh sách.
Tôi đã thử nhiều thứ khác nhau với kiến thức giới hạn về kịch bản lệnh shell, nhưng cho đến nay, không có gì có vẻ hiệu quả. Vì vậy, có một số tùy chọn cho ECHO tôi đang thiếu mà thực sự sẽ chạy lệnh thay vì chỉ in ra dòng?
Tôi có rollback bao gồm bạn một câu trả lời trong câu hỏi của chính nó. Vui lòng đăng câu trả lời của riêng bạn hoặc phê duyệt câu trả lời hiện có. Lưu ý rằng giải pháp của bạn gần giống với câu trả lời của Flo Doe. –