У меня есть eth0 и wlan0 в соответствии с ifconfig, и я могу ping google.com
. Как я могу узнать (с обычным пользователем, а не с правами root), какой интерфейс активен , например, каким интерфейсом пользовался ping (или что-то еще, ping не является обязательным)?
ПРИМЕЧАНИЕ: используя Ubuntu 11.04 или Fedora 14
Ответы:
Вы можете использовать,
route
чтобы найти маршрут по умолчанию:Iface
Столбец в строке с назначенияdefault
указывает, какой интерфейс используется.источник
route
использовать нельзя. У @Torgeir есть правильный ответ.192.168.1.0...
- это маршрут, который будет использоваться. Конечно, в этом случае это относится к тому же Iface, но это только потому, что у вас есть один интерфейс на вашем компьютере.Моя версия, которая в основном основана на этом и этом :
И это, экспериментально , для macOS:
источник
route |awk '/^default/{print $NF}'
В системах GNU / Linux:
источник
host
он является входным аргументом для скрипта. Поскольку маршрут (и, следовательно, интерфейс) может отличаться для разных ips.Бег
ifconfig
даст вам необходимую информацию.Активный интерфейс будет иметь
inet addr
и покажет запись переданных данных, например, так:Вы можете также использовать
ip addr
команду и все неактивные интерфейсы будут обозначены как имеющие:NO-CARRIER
.источник
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
route
команды, хотя она не обязательно будет надежной из-за маршрутизации. Маршрут по умолчанию не обязательно должен быть тем, чтобы попасть в Интернет, хотя часто это может быть.Один лайнер:
ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'
источник
Получите сетевой интерфейс по умолчанию, обычно используемый для маршрутизации к «оставшемуся» Интернету, в отличие от DMZ, частной сети, хоста VM и т. Д., Которые обычно маршрутизируются явно.
источник
ip -4 route ls |awk '/^default/{print $5}'
Команда
ip route ls
выдаст список активных маршрутов и их источников:источник
Используйте эту команду:
источник
используйте ниже:
источник
Если ваша машина имеет несколько интерфейсов (что я предполагаю), то нет одного интерфейса, который будет использоваться для подключения к Интернету.
В зависимости от пункта назначения, к которому вы подключаетесь, ваша система сверится с таблицей ip (той, которая отображается, когда вы выполняете
route
команду), чтобы найти следующую надежду / маршрутизатор, когда она найдет, она будет использовать связанный с ней интерфейс.Тем не менее, пожалуйста , обратитесь к @ Torgeir в ответ , как это делает именно то, что:
источник