Знать, что пользователь подключается по ssh из скрипта оболочки?

Знать, что пользователь подключается по ssh из скрипта оболочки?

У меня есть скрипт оболочки, который должен выполнять одно действие, если пользователь физически использует компьютер, и одно действие, если пользователь вошел в систему через SSH.

Как бы я это сделал?

Если говорить более конкретно, то моей обычной машиной является OS X, и там я хочу использовать графический редактор OS X (BBEdit) в качестве РЕДАКТОРА. Однако, если я подключаюсь по SSH к своему Mac с нетбука, я хочу использовать vim — у меня нет графического подключения к моему Mac.

Спасибо!

решение1

Вы должны иметь возможность использовать переменные среды SSH_CONNECTION, SSH_TTY или DISPLAY.

Видеть:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ssh.1.html

 SSH_CONNECTION        Identifies the client and server ends of the connection.  The variable contains
                       four space-separated values: client IP address, client port number, server IP
                       address, and server port number.

Редактировать: SSH_CLIENT также является опцией, но она не отображается на странице руководства.

решение2

Сравните ваши envлокальные данные и данные при входе через SSH.

SSH_CONNECTIONУ меня есть , например SSH_CLIENT, SSH_TTYкоторые определяются только при входе через SSH.

решение3

Я считаю, что /var/run/utmpx (см. "man utmpx") содержит эту информацию. Если вы запустите "who", вы увидите, что команда who может определить, подключены ли вы с удаленного узла (и даже знает, откуда вы подключились).

Поэтому вы всегда можете воспользоваться командой who и обработать вывод, чтобы определить это.

Примечание: Я считаю, что приведенные выше ответы (об использовании SSH_CONNECTION) являются лучшим решением.

Связанный контент