Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить удалённый вход или запущено локально.Две ситуации:
- главное - сессия в терминале через SSH,
- второстепенное - сессия с VNC или др. сервером.Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился в окружении удалённой системы.
По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять? Как лучше сделать?
> Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить
> удалённый вход или запущено локально.
> Две ситуации:
> - главное - сессия в терминале через SSH,
> - второстепенное - сессия с VNC или др. сервером.
> Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился
> в окружении удалённой системы.
> По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять?
> Как лучше сделать?lsof
В том и вопрос - какие конкретно признаки - переменные, файлы и т.п.
> В том и вопрос - какие конкретно признаки - переменные, файлы и
> т.п.1. grep socket
2.1 grep localhost in numeric view for IPv4 & IPv6 => detect for local mode
2.2. grep all non-local connection => detect non-local mode
> В том и вопрос - какие конкретно признаки - переменные, файлы и
> т.п.man lsof
> Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить
> удалённый вход или запущено локально.
> Две ситуации:
> - главное - сессия в терминале через SSH,
> - второстепенное - сессия с VNC или др. сервером.
> Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился
> в окружении удалённой системы.
> По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять?
> Как лучше сделать?who am i
cat /etc/hostname?
> cat /etc/hostname?Это имя хоста, на котором работает.
Откуда взять в скрипте имя хоста, с которого запустили SSH, например, сессию?
По каким признакам в скрипте, программно можно понять сессия локальная или удалённая?
> Откуда взять в скрипте имя хоста, с которого запустили SSH, например, сессию?Через env передайте.
Тут никак иначе - только передавать с хоста, который делает подключение. Представьте, что удаленно по ссш дозвонились, а потом еще раз к локалхосту. Или из баша, который запущен после подключения ссш, запустили скрин и в нем новый баш, с очищенным окружением.
> Две ситуации:
> - главное - сессия в терминале через SSH,
> - второстепенное - сессия с VNC или др. сервером.если везде bash
set |grep SSH_CLIENT
>> Две ситуации:
>> - главное - сессия в терминале через SSH,
>> - второстепенное - сессия с VNC или др. сервером.
> если везде bash
> set |grep SSH_CLIENTЛучше более универсальное, вне зависимости от шелла:
env |grep SSH_CLIENT