मैं एक अच्छी स्क्रिप्ट के साथ आया हूं जो मुझे आवश्यक आउटपुट का उत्पादन करेगा, लेकिन यह केवल स्क्रीन पर प्रदर्शित होता है, इसलिए मुझे कॉपी करना होगा, फिर उन्हें निष्पादित करने के लिए कमांड में पेस्ट करें। यहाँ मेरी स्क्रिप्ट के संक्षिप्त संस्करण है:क्या मैं आदेश निष्पादित करने के लिए ईसीएचओ का उपयोग कर सकता हूं?
#!/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 से मेल खाता है सूची में, मैं खोल खिड़की करने के लिए इस तरह उत्पादन देखेंगे के आर्मेनिया और ब्राजील के लिए मान लीजिए,:
/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
आदेश चलाना चाहते हैं, और सूची में देश के नाम से मेल खाने वाली लाइनों में आईपी (केवल और केवल) ब्लॉक करें।
मैंने शैल स्क्रिप्टिंग के सीमित ज्ञान के साथ विभिन्न चीजों की कोशिश की है, लेकिन अब तक, कुछ भी काम नहीं करता है। तो क्या ईसीएचओ के लिए कुछ विकल्प है जो मुझे याद आ रही है जो वास्तव में लाइन को प्रिंट करने के बजाए कमांड चलाएगी?
मैं सवाल अपने आप में एक जवाब के अपने शामिल किए जाने के रोलबैक की है। कृपया अपना उत्तर पोस्ट करें या मौजूदा में से एक को स्वीकृति दें। ध्यान दें कि आपका समाधान फ्लो डो के जवाब के लगभग समान था। –