4

На моем рабочем месте у нас есть несколько машин Linux в изолированной сети, и мне иногда нужно определить, на какой из них я вошел в систему. Это может быть проблемой, потому что у меня обычно есть большое количество окон терминала с несколькими вкладками, разбросанных по двум мониторам, четырем рабочим областям gnome, а иногда и нескольким сеансам входа в систему.

У меня есть список большинства машин, которые я использую, и что-то вроде $(rsh $M ps -wef | grep username | wc -l) обычно работает, но это медленно и не надежно. Я надеюсь, что есть какая-то утилита Unix или служба каталогов, которая отслеживает все входы в сеть, и что я могу просто проверить это и grep для моего имени пользователя. Я удивлен, что мне не удалось найти это с помощью поиска в Google, и я подозреваю, что такой утилиты не существует, но я надеюсь, что ошибаюсь.

3 ответа3

2

Нет такой утилиты, но одна вещь, которая может вам ближе, это посмотреть на netstat и проверить, что пункт назначения находится в списке серверов и что имя процесса - ssh.

Кроме того, не используйте rsh, если вы не любите подвергать риску свои машины.

Изменить: Больше информации

netstat перечисляет все активные в данный момент сетевые подключения в любом месте, учитывая правильные флаги. (man netstat). Подходя к вашей проблеме с другой стороны, вы пытались организовать свои связи больше? Я бы использовал screen и называл каждое окно на экране сервером, к которому вы подключаетесь (используя ^a,A)

1

Точно, но быстрее, чем netstat:

lsof -i -a -c ssh

Это возвращает данные как это:

COMMAND   PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ssh     15072  myuser    3u  IPv4 8118099      0t0  TCP self:51941->server1:22 (ESTABLISHED)
ssh     26242  myuser    3u  IPv4 9051562      0t0  TCP self:35685->server2:22 (ESTABLISHED)
ssh     26249  myuser    3u  IPv4 9051889      0t0  TCP self:46646->server1:22 (ESTABLISHED)

Таким образом, вы можете вырезать список имен серверов следующим образом:

lsof -i -a -c ssh | sed -n -e 's/.*>//' -e 's/:.*//p' | sort -u

который возвращает:

server1
server2
1

Очень просто и показывает любые имена или ярлыки, которые вы используете, когда указываете сервер на ssh:

ps --no-heading -o args -C ssh

возвращает:

ssh server1
ssh server2
ssh server1

(смотрите man ssh_config для подробностей определения ярлыков)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .