Apakah Anda mencari alamat IP eksternal router? Di masa lalu saya telah menggunakan skrip goresan layar untuk mendapatkan hal semacam itu dari halaman pengaturan router. Sebagian besar router rumah memiliki pengaturan berbasis browser yang mudah diakses dari dalam. Sulit untuk memberikan solusi umum tetapi Anda dapat menggunakan curl atau wget untuk mengambil halaman dan kemudian menggunakan grep & awk untuk mendapatkan alamat IP.
Tom Bascom
Seharusnya saya lebih jelas dalam pertanyaan saya. Pada dasarnya, saya ingin mencari alamat IP gateway yang diatur ke eth0 pada kotak yang memiliki antarmuka ethernet tunggal. Secara kebetulan, ini harus alamat IP dari rumah, dasar, tipe Linksys atau lebih, router NAT. Saya membutuhkannya sehingga saya bisa ping ke skrip shell.
J. Polfer
Tampak lebih kompleks dari yang saya butuhkan, tetapi ide yang keren dan dijamin untuk bekerja.
J. Polfer
Jawaban:
18
Untuk mencetak hanya IP gw default:
route -n | grep 'UG[ \t]' | awk '{print $2}'
Untuk mencetak informasi rute pada semua antarmuka:
Tidakkah UG membutuhkan antarmuka untuk aktif? Saya pikir hanya G akan lebih baik.
J. Polfer
Either way, ini tepat. Banyak Thanx.
J. Polfer
Ingin memberi tahu Anda - Saya sebenarnya menggunakan jawaban ini, tetapi hanya dengan G dalam pola grep; tidak memiliki iptool pada mesin yang saya butuhkan untuk menjalankan ini.
J. Polfer
2
Anda dapat menyelamatkan diri dari grep, awk juga dapat memfilter:route -n | awk '{if($4=="UG")print $2}'
Kenny Rasschaert
Saya akan menyarankan sesuatu seperti route -n|awk '$4~/G/{print $2; exit(0)}'untuk gateway pertama, tetapi ip route get IPlebih baik, karena mencantumkan rute yang akan benar-benar dibawa ke IP yang diberikan, yang sulit ditemukan dengan routesendirian
# get the default route
ip route list | awk ' /^default/ {print $3}'
# get the default route but limit on eth0 (output may be empty)
ip route list dev eth0 | awk ' /^default/ {print $3}'
Tantangan diterima: ip r | awk 'END{print $3}'tiga karakter lebih pendek.
Kenny Rasschaert
bagus, tetapi pada kotak debian / squeeze lokal saya dengan jembatan KVM default gw saya ada di baris satu. aneh tapi Nyata. Jadi solusi keren Anda tidak bekerja di mana-mana: - / (bagaimanapun +1)
ThorstenS
ip bukan perintah UNIX generik - jadi sekali lagi itu tidak akan berfungsi di mana-mana.
Mei
Anda benar, tetapi di $ Subject berdiri Linux dan bukan UNIX;) @ David: wow, Anda punya blog yang sangat bagus!
ThorstenS
1
read x x i x< <(ip r g 1), hasilnya dalam variabel $ i untuk penggunaan lebih lanjut
Tino
1
netstat -rn |awk '{if($1=="0.0.0.0") print $2}'
ini akan mencetak IP gateway dengan bersih. (Apa yang akan menjadi scripting linux tanpa awk ?)
Buka Terminal di OS Linux Anda Biasanya terletak di bar bagian atas atau bawah, tergantung pada distribusi Linux yang Anda gunakan Setelah Anda membuka jendela Terminal, masukkan perintah berikut “ip route | grep default ”Sekarang tunggu sebentar untuk output dan catat alamat gateway default Anda di layar. Alamat gateway Anda akan terlihat seperti 192.168.1.1. Setelah Anda mengetahuinya, Anda dapat mulai mengkonfigurasi router Anda melalui panel admin webnya.
Jika ini tidak memperbaiki jaringan Anda, Anda mungkin perlu router baru.
Jawaban:
Untuk mencetak hanya IP gw default:
Untuk mencetak informasi rute pada semua antarmuka:
atau
sumber
route -n | awk '{if($4=="UG")print $2}'
route -n|awk '$4~/G/{print $2; exit(0)}'
untuk gateway pertama, tetapiip route get IP
lebih baik, karena mencantumkan rute yang akan benar-benar dibawa ke IP yang diberikan, yang sulit ditemukan denganroute
sendirianadalah entri saya :)
sumber
cut
~ 20 kali lebih ringan dari binerawk
.Anda bisa mendapatkan gateway default sistem dari output
netstat -r
atauroute
sumber
0.0.0.0 adalah gateway default Anda, menunjuk ke 192.168.1.254 di tempat saya.
sumber
Output dari rute -n atau netstat -rn, dan mencari tujuan 0.0.0.0.
sumber
Saya lebih suka paket iproute :
sumber
Adakah yang lebih pendek dari ini? =)
sumber
ip r | awk 'END{print $3}'
tiga karakter lebih pendek.read x x i x< <(ip r g 1)
, hasilnya dalam variabel $ i untuk penggunaan lebih lanjutnetstat -rn |awk '{if($1=="0.0.0.0") print $2}'
ini akan mencetak IP gateway dengan bersih. (Apa yang akan menjadi scripting linux tanpa awk ?)
sumber
netstat -rn|sed -n '/^0.0.0.0/{ s/^[0. ]*//; s/ .*$//; p; }
Jika Anda ingin mendapatkan gateway dari file antarmuka:
sumber
Perintah one liner saya untuk mendapatkan alamat IP gateway default:
sumber
Buka Terminal di OS Linux Anda Biasanya terletak di bar bagian atas atau bawah, tergantung pada distribusi Linux yang Anda gunakan Setelah Anda membuka jendela Terminal, masukkan perintah berikut “ip route | grep default ”Sekarang tunggu sebentar untuk output dan catat alamat gateway default Anda di layar. Alamat gateway Anda akan terlihat seperti 192.168.1.1. Setelah Anda mengetahuinya, Anda dapat mulai mengkonfigurasi router Anda melalui panel admin webnya.
Jika ini tidak memperbaiki jaringan Anda, Anda mungkin perlu router baru.
sumber