Автоматически вставлять команды в несколько процессов сеанса экрана

Я создал файл /etc/stunnel/stunnel.conf на основе примера файла для туннеля gmail (gmail -правила imap по адресу/usr/share/doc/stunnel4/examples/stunnel.conf-sample):

[outlook365-imap]
client = yes
accept = 1.1.1.1:143
connect = outlook.office365.com:993
verifyChain = no

, тогда как 1.1.1.1 — это IP-адрес интерфейса туннельного сервера.

Затем я начал оглушать с помощью:

sudo service stunnel4 start

Чтобы проверить, работает ли туннель, подключитесь к нему через telnet:

$telnet 1.1.1.1 143
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.
* OK The Microsoft Exchange IMAP4 service is ready. [VgBJADEAUABSADAANwBDAEEAMAAxADcAMQAuAGUAdQByAHAAcgBkADAANwAuAHAAcgBvAGQALgBvAHUAdABsAG8AbwBrAC4AYwBvAG0A]
A1 LOGOUT
* BYE Microsoft Exchange Server 2016 IMAP4 server signing off.
A1 OK LOGOUT completed.
Connection closed by foreign host.

Эти выходные данные подтверждают, что туннель TLS действительно работает правильно.

Мы также протестировали его с клиентом Outlook Windows, указав на 1.1.1.1 :143, прежде чем указать приложению на туннель. Это работает хорошо.

Приложение для начинающих :Почему это работает? Потому что большинство «новых» безопасных интернет-протоколов построены с использованием старых протоколов открытого текста с дополнительным уровнем шифрования.

0
05.09.2019, 23:28
1 ответ

Наконец-то я нашел ответ благодаря этому сообщению на StackExchange! Иногда для поиска решения требуются другие ключевые слова, поэтому я отвечу на этот вопрос на случай, если сюда попадут другие ребята.

В двух словах

Автоматически вставлять команды на экран с помощью команды bash:

screen -x screen_name -p 1 -S stuff 'executable_script1.sh\n'

, где -p 1относится к экранному процессу 1$. Обратите внимание, что \nв конце команды обязателен, как и при нажатии клавиши ввода после вставки командной строки.

Подробные шаги

1 )Создайте сеанс screen, в котором вы хотите работать, (с именем «экран _имя»):

screen -S screen_name

с достаточным количеством процессов для всех команд (в моем примере, 0$ htopплюс 2 процесса:1$и 2$). Обратите внимание, что вы можете отредактировать .screenrcв своем домашнем каталоге, чтобы сеансы экрана начинались с заданным количеством процессов по умолчанию. Для этого примера мой .screenrcсодержит:

screen -t htop
screen -t 
screen -t 

2 )Создать файлы bash для каждой группы команд,для выполнения различными экранными процессами.

Здесь у меня есть 2 файла, screen1содержащие:

#!/bin/bash

screen -x screen_name -p 1 -X stuff 'executable_script1.sh\n'
screen -x screen_name -p 1 -X stuff 'mv executable_script1 directory1\n'

и screen2, содержащие:

#!/bin/bash

screen -x screen_name -p 2 -X stuff 'executable_script2.sh\n'
screen -x screen_name -p 2 -X stuff 'mv executable_script2 directory1\n'

3 )Вставьте сразу все свои команды в терминал с помощью:

bash /path_to_screen1/screen1 & /path_to_screen1/screen2 &

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

Излишне говорить, что если у вас есть большое количество команд для передачи во многие экранные процессы, вы можете создать файлы bash и вставить команды (шаги 2 и 3 )с помощью скрипта (с помощью python, например ). Также executable_script1.shможет содержать вызовы python, если необходимо, с python python_script.py, как в обычном терминале.

Надеюсь, это поможет другим!

0
28.01.2020, 03:20

Теги

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