У меня есть скрипт оболочки, который должен выполнять одно действие, если пользователь физически использует компьютер, и одно действие, если пользователь вошел в систему через 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) являются лучшим решением.