Saya menjalankan mesin Linux yang dibuat khusus, jadi tidak semua perintah Linux tersedia .
Saya menjalankan perintah yang berhubungan dengan jaringan, jadi saya perlu mengatur gateway default tepat sebelum saya menjalankan perintah saya, kemudian hapus gateway itu segera sesudahnya.
Untuk melakukan itu saya menjalankan semua perintah saya dalam satu baris:
/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
Masalahnya adalah, untuk beberapa alasan saya pernah menemukan 2 gateway default pada mesin yang sama yang menyebabkan semua perintah saya gagal karena bahkan jika saya mengatur gateway default saya sebelum menjalankan pengujian saya, itu masih kacau dan tidak dapat menjalankan pengujian saya.
Jadi apakah ada cara untuk menghapus SEMUA gateway default dalam satu perintah ? Saya memiliki sejumlah besar mesin yang meningkat dan tidak praktis untuk menanam skrip di setiap mesin. Saya memerlukan perintah sesederhana berikut ini:
/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
Semua saya telah menemukan sejauh ini adalah perintah untuk menghapus sebuah default gateway tapi tidak semua dari mereka
/sbin/route del default
yang tidak akan bekerja untuk saya.
/sbin/route
bantuan menampilkan yang berikut ini
/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
Untuk menghapus semua gateway default menggunakan
ip
sumber
Jika kode Anda rusak dengan beberapa gateway default, Anda mungkin juga harus mencari di beberapa alamat ip per perangkat.
Ketika Anda sudah menerima jawaban di sini adalah pendekatan lain karena Anda TIDAK PERNAH harus mengubah konfigurasi sistem Anda hanya karena Anda ingin menjalankan / menguji skrip. Bagaimana kalau menggunakan namespace jaringan sebagai gantinya. Untuk pengantar singkat cara menambahkan perangkat virtual ke NS (namespace) Anda lihat di http://code.google.com/p/coreemu/wiki/Namespaces .
Untuk membuat tes namespace bernama dan menjalankan perintah di bawah namespace ini jalankan saja
di mana PERINTAH dapat misalnya shell Anda atau hanya skrip server.
sumber
Semua jawaban bagus tetapi saya menyelesaikan masalah ini menggunakan pendekatan yang berbeda, saya menggunakan perintah untuk menambahkan hanya satu gateway default, tetapi gagal jika sudah ada satu. Dan akhirnya menghapus gateway yang salah di akhir perintah. Ini harus bekerja pada isa kedua kalinya.
ip route add default via my-gateway
ip route del default
sumber