Можно ли в линуксе передать экземпляр класса из одного процесса в другой и выполнить с ним действия? Собственно, сабж. В качестве примера и разъяснения приведу ту задачу, которая его передо мной поставила.
Есть рабочий компьютер, на нем Linux Mint. На нем выполняется скрип Python 3 (назовем его check.py), который инициирует два соединения с коммутаторами в сети по телнету (сделал через pexpect), в каждом из них выполняет действия, собирает информацию, а потом в одном из соединений оставляет интерактив, а второе удаляет. Мне захотелось открывать второе окно терминала, в котором окажется интерактив со вторым соединением.
Поскольку я все повторяющиеся действия попрятал в классы, код выглядел примерно так:from connections import connect_to_switch
switch1 = connect_to_switch('192.168.1.1')
switch2 = connect_to_switch('192.168.2.1')
#Дальше всякие действия с этими соединениями
del switch2
switch1.interact()
То есть мне захотелось новое окно терминала, в котором бы был результат выполнения switch2.interact(), причем мне не хотелось рвать соединение до 192.168.2.1. Но я совсем не понял, как это можно сделать, не совсем понимаю, что для такого результата нужно, и ничего не нашел в гугле. Поэтому решил задачу через дополнительный скрипт:from connections import connect_to_switch
import subprocess
switch1 = connect_to_switch('192.168.1.1')
switch2 = connect_to_switch('192.168.2.1')
#Дальше всякие действия с этими соединениями
del switch2
subprocess.call("mate-terminal -e '/home/user/script.py {}'".format('192.168.2.1'), shell=True)
switch1.interact()
В скрипте /home/user/script.py, как несложно догадаться, 3 строчки, которые приведены выше уже по два раза.
Какие-то соображения, оказавшиеся в голове, сформулировали уже уточненные вопросы:Как можно получить объект, определенный в check.py, и какие параметры для этого нужны? Как можно выполнить с ним действие, определенное только в check.py? Может быть, можно запустить интерактив по switch2 в самом скрипте (родительском), а потом совместить новое окно терминала с этой сессией? (если да, объясните, пожалуйста, на уровне принципа)Если программа в принципе не может выполнить свой код в рамках другого процесса, объясните, пожалуйста, почему. По каким темам нужно ликвидировать свою безграмотность, чтобы уметь самому на все эти вопросы ответить?

21 Авг 2019 в 06:26
150 +1
0
Ответы
Нет ответов
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир