วิธีลบเกตเวย์เริ่มต้นทั้งหมด


13

ผมใช้เครื่อง Linux ตัวเองเพื่อให้ได้คำสั่งลินุกซ์ทั้งหมดที่มีอยู่
ฉันรันคำสั่งที่เกี่ยวข้องกับเครือข่ายดังนั้นฉันต้องตั้งค่าเกตเวย์เริ่มต้นก่อนที่ฉันจะรันคำสั่งจากนั้นลบเกตเวย์นั้นทันทีหลังจากนั้น

ในการทำเช่นนั้นฉันรันคำสั่งทั้งหมดของฉันในหนึ่งบรรทัด

/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

ฉันเชื่อว่าจับเส้นทางเริ่มต้นทั้งหมด


ขอบคุณ แต่มันยังคงลบเกตเวย์เริ่มต้นเดียวเท่านั้นไม่ใช่ทั้งหมด
มูฮัมหมัด Gelbana

4
จากนั้นบางทีคุณควรวนซ้ำเส้นทางที่เป็นค่าเริ่มต้นทั้งหมดและลบออกแทนที่จะสมมติว่าการลบครั้งแรกของคุณจะลบเส้นทางทั้งหมด ดูเหมือนว่ารหัสของคุณกำลังแตกหักและเพิ่มเส้นทางเริ่มต้นมากกว่าหนึ่งเส้นทาง นี่ไม่ใช่เหตุการณ์ปกติ
jsbillings

ฉันยอมรับว่ารหัสของฉันแตกหักในบางจุด แต่อาจเป็นฉันสามารถแก้ปัญหานี้ได้อย่างรวดเร็วโดยแก้ไขสิ่ง GW แทนการเสียเวลามากที่ฉันไม่มี ขอบคุณมาก ๆ สำหรับความช่วยเหลือของคุณ.
มูฮัมหมัด Gelbana

นี่คือลินุกซ์ที่ทันสมัยเท่านั้น
จอร์แดน


3

คำตอบทั้งหมดนั้นยอดเยี่ยม แต่ฉันแก้ไขปัญหานี้โดยใช้วิธีอื่นฉันใช้คำสั่งเพื่อเพิ่มเกตเวย์เริ่มต้นเดียวเท่านั้น แต่ล้มเหลวหากมีอยู่แล้ว และในที่สุดก็ลบเกตเวย์ผิดที่ส่วนท้ายของคำสั่ง นี่ควรทำงานในครั้งที่สอง isa

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


2

หากรหัสของคุณแบ่งออกเป็นหลายเกตเวย์เริ่มต้นคุณอาจต้องดูที่อยู่ IP หลายรายการต่ออุปกรณ์

ดังที่คุณได้รับคำตอบแล้วนี่เป็นอีกแนวทางหนึ่งที่คุณไม่ควรเปลี่ยนการกำหนดค่าระบบของคุณเพียงเพราะคุณต้องการรัน / ทดสอบสคริปต์ วิธีการเกี่ยวกับการใช้เนมสเปซเครือข่ายแทน สำหรับการแนะนำสั้นวิธีการเพิ่มอุปกรณ์เสมือน NS คุณ (namespace) มีลักษณะที่http://code.google.com/p/coreemu/wiki/Namespaces

ในการสร้างเนมสเปซที่ชื่อ test และรันคำสั่งภายใต้ namespace นี้ให้เรียกใช้

ip netns add test
ip netns exec test COMMAND

โดยที่ COMMAND สามารถเป็นตัวอย่างเชลล์ของคุณหรือเพียงแค่สคริปต์เซิร์ฟเวอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.