सभी डिफ़ॉल्ट गेटवे कैसे निकालें


13

मैं एक कस्टम निर्मित लिनक्स मशीन चला रहा हूं, इसलिए सभी लिनक्स कमांड उपलब्ध नहीं हैं
मैं नेटवर्क से संबंधित कमांड निष्पादित करता हूं, इसलिए मुझे अपना कमांड चलाने से पहले एक डिफ़ॉल्ट गेटवे सेट करने की आवश्यकता है , फिर उस गेटवे को तुरंत बाद में हटा दें।

यह करने के लिए कि मैं अपने सभी आदेशों को एक पंक्ति में चलाता हूं:

/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;

समस्या यह है कि किसी कारण से मैंने एक बार एक ही मशीन पर 2 डिफ़ॉल्ट गेटवे पाए, जिसके कारण मेरे सभी आदेश विफल हो गए क्योंकि अगर मैं अपना परीक्षण चलाने से पहले अपना डिफ़ॉल्ट गेटवे सेट करता हूं, तो भी यह गड़बड़ है और मेरा परीक्षण नहीं चल सकता।

तो क्या एक कमांड में सभी डिफ़ॉल्ट गेटवे को हटाने का एक तरीका है ? मेरे पास बड़ी मात्रा में मशीनें हैं जो बढ़ती जा रही हैं और हर मशीन पर स्क्रिप्ट लगाना व्यावहारिक नहीं होगा। मैं के रूप में एक आदेश की जरूरत है सरल निम्नलिखित के रूप में:

/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;

अब तक मैंने पाया है कि एक डिफ़ॉल्ट गेटवे को हटाने के लिए एक कमांड है लेकिन उन सभी /sbin/route del defaultको नहीं जो मेरे लिए काम नहीं करेंगे।

/sbin/route मदद निम्नलिखित प्रदर्शित करता है

/sbin/route --help

Usage: route [{add|del|delete}]

Edit the kernel's routing tables

Options:
        -n      Don't resolve names
        -e      Display other/more information
        -A inet Select address family

जवाबों:


17

यदि आप ipइसके बजाय उपयोग करते हैं route, तो आप बस चला सकते हैं:

ip route del 0/0

मेरा मानना ​​है कि सभी डिफ़ॉल्ट मार्गों को पकड़ता है।


धन्यवाद, लेकिन यह अभी भी केवल एक डिफ़ॉल्ट गेटवे को हटाता है, सभी नहीं।
मुहम्मद गालबाना

4
तब शायद आपको सभी डिफ़ॉल्ट मार्गों के माध्यम से पुनरावृति करनी चाहिए, और उन्हें हटा देना चाहिए, यह मानने के बजाय कि आपका पहला निष्कासन उन सभी को हटा देता है। ऐसा लगता है कि आपका कोड किसी तरह टूट रहा है और एक से अधिक डिफ़ॉल्ट मार्ग जोड़ रहा है। यह सामान्य परिस्थिति नहीं है।
jsbillings

मैं सहमत हूं कि मेरा कोड किसी बिंदु पर टूट जाता है, लेकिन हो सकता है कि मैं बहुत समय बर्बाद करने के बजाय जीडब्ल्यू चीज को ठीक करके इसे जल्दी से हल कर सकता हूं जो मेरे पास नहीं है। आपकी सहायता के लिए धन्यवाद।
मुहम्मद गालबाना

यह आधुनिक लिनेक्स है।
जोर्डनम


3

सभी उत्तर बहुत अच्छे हैं, लेकिन मैंने एक अलग दृष्टिकोण का उपयोग करके इस समस्या को हल किया, मैंने केवल एक डिफ़ॉल्ट गेटवे को जोड़ने के लिए कमांड का उपयोग किया, लेकिन अगर पहले से ही एक है तो असफल हो जाएं। और इस प्रकार अंततः कमांड के अंत में गलत गेटवे को हटा दें। यह दूसरी बार isa पर काम करना चाहिए।

ip route add default via my-gateway ip route del default


2

यदि आपका कोड कई डिफ़ॉल्ट गेटवे के साथ टूटता है, तो आपको संभवतः प्रति डिवाइस कई आईपी पते में भी देखना चाहिए।

आपको पहले से प्राप्त के रूप में एक जवाब यहाँ एक और दृष्टिकोण आप चाहिए के रूप में है कभी आपके सिस्टम के विन्यास को बदलने सिर्फ इसलिए कि आप चलाने / एक स्क्रिप्ट का परीक्षण करना चाहते। इसके बजाय नेटवर्क नामस्थान का उपयोग करने के बारे में कैसे। अपने एनएस (नेमस्पेस) में आभासी उपकरणों को जोड़ने के लिए एक संक्षिप्त परिचय के लिए http://code.google.com/p/coreemu/wiki/Namespaces पर एक नज़र है ।

परीक्षण नाम नामस्थान बनाने के लिए और इस नामस्थान के तहत एक कमांड चलाएं

ip netns add test
ip netns exec test COMMAND

जहाँ COMMAND आपके शेल या केवल सर्वर स्क्रिप्ट के उदाहरण के लिए हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.