Как выполнить команду через SSH и сохранить соединение открытым?

Вы, вероятно, используете аппаратный рендеринг, проверьте следующее:

$ glxinfo | fgrep direct
direct rendering: Yes

«Прямой рендеринг» выше объясняется в Википедии как:

Инфраструктура прямого рендеринга (DRI) является фреймворк для обеспечения прямого доступа к графическому оборудованию в системе X Window безопасным и эффективным способом. Основное использование DRI - обеспечение аппаратного ускорения для реализации OpenGL в Mesa.

Как указывает @Ruslan, Mesa содержит программный рендерер, который можно использовать в качестве запасного варианта, когда аппаратный ускоритель графики недоступен. Он называется Галлий в строке рендерера OpenGL . Но ваш вывод показывает, что используется рендерер Intel, а не программный.

7
04.09.2018, 20:54
3 ответа

Я используюsshpass

установите его с помощью менеджера пакетов на локальном компьютере

, затем запустите

sshpass -p 'YOUR_SSH_PASSWORD' USER@1.1.1.1 'YOUR-COMMAND' 
-3
27.01.2020, 20:18

То, что вы описываете, известно как мультиплексирование SSH.

Я использую эту настройку в настройках DevOps для кэширования подключений к любым виртуальным машинам.

Таким образом, я повторно использую одно и то же соединение до 30 минут/кэширую соединение, не пересматривая все соединение SSH (и не аутентифицируя пользователя )в каждой новой команде.

Это дает мне огромный прирост скорости при отправке (нескольких )команд подряд на виртуальную машину/сервер.

Настройка выполняется на стороне клиента, и для 30-минутного кэша настройку можно выполнить в /etc/ssh/ssh_configкак:

ControlPath ~/.ssh/cm-%r@%h:%p
  ControlMaster auto
  ControlPersist 30m

Параметр MaxSessions, также в ssh_config, также определяет, сколько мультиплексных соединений разрешено для одновременных соединений; значение по умолчанию — 10. Если вам нужно больше одновременных кэшированных подключений, вы можете изменить это значение.

Например, для максимум 20 кэшированных подключений:

MaxSessions 20

Для получения дополнительной информации см. OpenSSH/Cookbook/Multiplexing

An advantage of SSH multiplexing is that the overhead of creating new TCP connections is eliminated.
...
The second and later connections will reuse the established TCP connection >over and over and not need to create a new TCP connection for each new SSH connection.

См. также Использование SSH-мультиплексирования

SSH multiplexing is the ability to carry multiple SSH sessions over a single TCP connection

Without multiplexing, every time that command is executed your SSH client must establish a new TCP connection and a new SSH session with the remote host. With multiplexing, you can configure SSH to establish a single TCP connection that is kept alive for a specific period of time, and SSH sessions are established over that connection. This can result in speed increases that can add up when repeatedly running commands against remote SSH hosts.

Наконец, поскольку мультиплексирование поддерживает открытое TCP-соединение между клиентом и сервером, у вас будет гарантия, что вы общаетесь с одной и той же машиной в балансировщике нагрузки, пока кеш открыт/активен.

9
27.01.2020, 20:18

Есть несколько способов сделать это, вы можете попробовать

 ssh -fT -L 40000:localhost:40000 root@1.2.3.4 'sleep 60'
 FOO=$(ssh root@localhost -p 40000 cat /foo)

остальное можно продолжить...

Здесь -f — перевести его в фоновый режим, а -T — отключить выделение tty. Используя команду sleep, чтобы сохранить сеанс активным в течение 60 секунд и разрешить сам выход, вы можете изменить его или восполнить другими способами.

Простой, например, поддерживать сеанс в рабочем состоянии, пока он не увидит файл /tmp/a.txt, как только вы закончите свою работу, создайте файл, а цикл увидит его и запустит очистку rm / tmp/a.txt и выходит из сеанса.

ssh -fT -L 40000:localhost:40000 root@1.2.3.4 'while [[ ! -f /tmp/a.txt ]] ; do sleep 2 ; done ; rm /tmp/a.txt'
FOO=$(ssh root@localhost -p 40000 cat /foo)
do you work..
ssh root@localhost -p 40000 touch /tmp/a.txt

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

2
27.01.2020, 20:18

Теги

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