我想出了一個很酷的腳本,它將生成我需要的輸出,但它只顯示在屏幕上,所以我必須複製,然後粘貼命令才能讓它們執行。這裏是我的腳本的簡化版本:我可以使用ECHO執行命令嗎?
#!/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
好了,所以它遍歷在iptext.txt IP地址的列表,然後做了GEOIP查找每個,如果(在這個例子中)有兩個GEOIP匹配在列表中,讓我們說亞美尼亞和巴西,我會看到這樣的輸出到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
這是偉大的,但我要的不僅僅是輸出多,其實我是想在/etc/csf/csf.pl -d
命令來運行,並在列表中阻止(僅限且僅限)符合國名的行中的IP。
我已經嘗試了各種有限的shell腳本知識,但到目前爲止,似乎沒有任何工作。那麼是否有ECHO的一些選擇,我錯過了實際運行命令而不是僅僅打印出該行?
我回滾您對問題本身的答案的包容性。請張貼您自己的答案或批准現有的答案之一。請注意,您的解決方案與Flo Doe的答案几乎完全相同。 –