The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Как в скрипте определить, что сессия SSH или GUI не локальная?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Консоль / Linux)
Изначальное сообщение [ Отслеживать ]

"Как в скрипте определить, что сессия SSH или GUI не локальная?"  +/
Сообщение от And (??), 03-Авг-21, 08:58 
Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить удалённый вход или запущено локально.

Две ситуации:
- главное - сессия в терминале через SSH,
- второстепенное - сессия с VNC или др. сервером.

Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился в окружении удалённой системы.

По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять? Как лучше сделать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 03-Авг-21, 13:12   +/
> Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить
> удалённый вход или запущено локально.
> Две ситуации:
>  - главное - сессия в терминале через SSH,
>  - второстепенное - сессия с VNC или др. сервером.
> Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился
> в окружении удалённой системы.
> По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять?
> Как лучше сделать?

lsof

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

2. Сообщение от Ann None (?), 03-Авг-21, 14:49   +/
> Как проще в скрипте определять, что скрипт запустили в локальной сессии? Определить
> удалённый вход или запущено локально.
> Две ситуации:
>  - главное - сессия в терминале через SSH,
>  - второстепенное - сессия с VNC или др. сервером.
> Запускаю скрипт, в скрипте хочу определять локальная ли сессия или шелл запустился
> в окружении удалённой системы.
> По каким переменным, признакам (по наличию или отсутствию) и т.п. лучше определять?
> Как лучше сделать?

who am i

Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Аноним (3), 03-Авг-21, 15:09   +/
cat /etc/hostname?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4

4. Сообщение от And (??), 03-Авг-21, 15:26   +/
> cat /etc/hostname?

Это имя хоста, на котором работает.

Откуда взять в скрипте имя хоста, с которого запустили SSH, например, сессию?

По каким признакам в скрипте, программно можно понять сессия локальная или удалённая?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #9

5. Сообщение от And (??), 03-Авг-21, 15:27   +/
В том и вопрос - какие конкретно признаки - переменные, файлы и т.п.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #6, #7

6. Сообщение от Аноним (1), 03-Авг-21, 16:44   +/
> В том и вопрос - какие конкретно признаки - переменные, файлы и
> т.п.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

7. Сообщение от Аноним (1), 03-Авг-21, 16:45   +/
> В том и вопрос - какие конкретно признаки - переменные, файлы и
> т.п.

man lsof

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

8. Сообщение от sys (??), 03-Авг-21, 18:51   +/
> Две ситуации:
>  - главное - сессия в терминале через SSH,
>  - второстепенное - сессия с VNC или др. сервером.

если везде bash
set |grep SSH_CLIENT

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10

9. Сообщение от Аноним (3), 04-Авг-21, 09:59   +/
> Откуда взять в скрипте имя хоста, с которого запустили SSH, например, сессию?

Через env передайте.
Тут никак иначе - только передавать с хоста, который делает подключение. Представьте, что удаленно по ссш дозвонились, а потом еще раз к локалхосту. Или из баша, который запущен после подключения ссш, запустили скрин и в нем новый баш, с очищенным окружением.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

10. Сообщение от universite (ok), 05-Авг-21, 11:41   +/
>> Две ситуации:
>>  - главное - сессия в терминале через SSH,
>>  - второстепенное - сессия с VNC или др. сервером.
> если везде bash
> set |grep SSH_CLIENT

Лучше более универсальное, вне зависимости от шелла:
env |grep SSH_CLIENT

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру