Wymyśliłem fajny skrypt, który wytworzy wynik, którego potrzebuję, ale wyświetla się tylko na ekranie, więc muszę skopiować, a następnie wkleić komendy, aby je wykonać. Oto skrócona wersja mojego skryptu:Czy mogę używać ECHO do wykonywania poleceń?
#!/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
Ok, więc pętle listę adresów IP w iptext.txt, następnie robi odnośnika GeoIP na siebie, jeśli (w tym przykładzie) Istnieją dwa mecze GeoIP na liście, powiedzmy dla Armenii i Brazylii, będę widzieć wyjście tak do okna powłoki:
/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
to jest dobre, ale chcę więcej niż tylko wyjście, faktycznie chcę komenda /etc/csf/csf.pl -d
do uruchomienia, i zablokuj (tylko i wyłącznie) adres IP w liniach pasujących do nazwy kraju na liście.
Próbowałem różnych rzeczy z moją ograniczoną znajomością skryptów powłoki, ale jak dotąd nic nie działa. Czy jest jakaś opcja dla ECHO, której mi brakowało, która faktycznie uruchomiłaby polecenie, a nie tylko wydrukowała linię?
muszę wycofać swoją publikację odpowiedzi w samym pytaniu. Proszę zamieścić własną odpowiedź lub zatwierdzić jedną z istniejących. Zauważ, że twoje rozwiązanie było prawie identyczne z odpowiedzią Flo Doe. –