Назад | Перейти на главную страницу

Unix: как найти имя интерфейса Ethernet, через который я вошел в систему

У нас есть многосетевые серверы. И чтобы упростить ситуацию, я хотел бы знать dns интерфейса, через который я вошел в систему. (Например, чтобы установить PS1, чтобы его можно было использовать в командах scp)

Мое решение этой проблемы кажется довольно сложным. => есть ли более простой / простой и портативный способ?


ORIGIN_NAME=`who -m | cut -d\( -f2 | cut -d\) -f1`
ORIGIN_IP=`getent hosts $ORIGIN_NAME | awk '{ print $1; }'`
INTERFACE_NAME=`ip route get $ORIGIN_IP | grep dev | awk '{ print substr($0,index($0,"dev")+4,4); }'`
INTERFACE_IP=`ifconfig -a $INTERFACE_NAME | grep inet | awk ' { print $2; }' | cut -d: -f2`
getent hosts $INTERFACE_IP | awk '{ print $NF; }'
ip route get ${SSH_CONNECTION%% *}

У @Mark Plotnick самый простой вариант! Просто используйте echo $SSH_CONNECTION он выведет что-то вроде client-IP, client-Port, server-IP, server-port, первый - ваш IP (откуда вы входите в систему), второй - это IP или хост, к которому вы подключены. Кредит должен быть отдан Марку на этом.