Узнайте, какая команда работает в рамках экранной сессии

Что Вы спрашивающий являетесь почти тем же как этим.

Если Вы не хотите копировать ключ от шлюза до локального поля, работой вокруг является Метод использования 1 (псевдоним удара) в том сообщении (и ниже). ssh_config не может сделать то, что Вы хотите. У меня есть объяснение детали там о различии между псевдонимом и туннельным методом, которые включают ssh_config ProxyCommand.

Метод 1

В ~/.bashrc, добавьте следующую строку

alias ssh-test='ssh -t gateway ssh test@test'

В командной строке просто введите следующее

ssh-test

Что ssh -t gateway ssh test@test сделайте почти то же следующим образом

local# ssh gateway
gateway# ssh test@test

Кроме объединения этих двух ступают в один, оно пропускает открытие оболочки (csh, удар, и т.д.) на gateway, вместо этого запуская ssh сессию к test прямо после аутентификации.

Вы не нуждаетесь в ~/.ssh/config на локальном поле, НО сохраняете один шлюз для test (для ключевого использования).

Добавление ForwardAgent yes к gatway .ssh/config

Host test
    HostName 192.168.1.10
    ForwardAgent yes
    IdentityFile ~/keys/test
    User test

Метод 2

Если Вы не хотите копировать ключ шлюза к локальному полю, но разрешили устанавливать Ваш local ключ ssh в test@test. Затем можно использовать следующее

локальный ~/.ssh/config

Host gateway
    User 
    HostName 

Host test
    User test
    Hostname 192.168.1.10
    Port 22
    ProxyCommand ssh gateway nc %h %p

10
04.09.2014, 22:40
2 ответа

Недавно мне пришлось это сделать. На странице Stack Overflow я ответил, как найти PID процесса, запущенного на экране . После получения PID вы можете использовать ps для получения команды. Вот содержимое этого ответа с некоторым дополнительным содержимым для решения вашей ситуации:

Вы можете получить PID сеансов экрана здесь так:

$ screen -ls
There are screens on:
        1934.foo_Server         (01/25/15 15:26:01)     (Detached)
        1876.foo_Webserver      (01/25/15 15:25:37)     (Detached)
        1814.foo_Monitor        (01/25/15 15:25:13)     (Detached)
3 Sockets in /var/run/screen/S-ubuntu.

Предположим, что вы хотите, чтобы PID программы, запущенной в Bash, находился в сеансе экрана foo_Monitor. Используйте PID сессии экрана foo_Monitor, чтобы получить PID сессии bash, запущенной в ней, путем поиска PPIDs (Parent PID) для известного PID:

$ ps -el | grep 1814 | grep bash
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  1815  1814  0  80   0 -  5520 wait   pts/1    00:00:00 bash

Теперь получите только PID сессии bash:

$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815

Теперь мы хотим, чтобы процесс с PID этим PID был запущен в Bash. Просто вложите команды, и на этот раз используйте флаг -v на grep bash, чтобы получить процесс, который является а не bash:

$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869

Мы можем использовать этот PID, чтобы найти команду (Посмотрите на конец второй строки):

$ ps u -p 23869
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ?     Sl   Feb02 1147:09 /usr/lib/foo

Сложите всё вместе:

$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
18
27.01.2020, 19:59

Как насчет использования screen -S , чтобы дать сеансам экрана понятные имена в соответствии с командами, которые они запускают? Имена будут перечислены с screen -ls и будут использоваться для возобновления сеанса с помощью screen -r .

Отредактируйте, чтобы добавить:

Поскольку это было доведено до моего сведения буквально на днях. tmux предлагает тот же набор функций, что и screen (если не больше), и поставляется с функцией, соответствующей вашим потребностям. Из FAQ: «tmux поддерживает автоматическое переименование окон в запущенное приложение без грубых взломов с использованием escape-последовательностей. По умолчанию даже включено»

7
27.01.2020, 19:59

Теги

Похожие вопросы