2

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

Как бы я поступил так?

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

Спасибо!

3 ответа3

2

Вы должны иметь возможность использовать переменные окружения 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 также вариант, но он не отображается на странице руководства.

1

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

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

0

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

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

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

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