Как взаимодействовать с новой оболочкой, в которую я вошел из скрипта? - PullRequest
0 голосов
/ 06 января 2019

Невозможно отправить команды в оболочку. Я вошел в систему

Первоначально я написал скрипт на Python. Он был в состоянии отправить команды как

subprocess.run(['kubectl', 'config', 'get-context'], shell=True)

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

Затем я попытался сделать это с модулем "sh", но также не удалось

Я подумал, что, возможно, использование Python было проблемой, а также понял, что моя конечная цель - использовать другую оболочку (cypher-shell) и поэтому сразу же перешел к ней с bash в качестве родительской оболочки. Там у меня есть строка, которая иногда успешна, иногда нет

kubectl run -it --rm cypher-shell   --image=gcr.io/cloud-marketplace/neo4j-public/causal-cluster-k8s:3.4   --restart=Never   --namespace=default   --command -- ./bin/cypher-shell -u neo4j   -p "password" -a "domain.name"

Но даже когда он успешно входит в систему, он просто зависает, пока я не выйду вручную, а затем запускает следующие команды

Примечание: я видел это, и, возможно, это не дочерняя оболочка? Запуск команды оболочки из дочерней оболочки

1 Ответ

0 голосов
/ 06 января 2019

Не могу сказать, что точно знаю, что вы делаете, но если я правильно понимаю вашу цель, вы хотите, чтобы программа Python продолжала регистрироваться, пока скрипт продолжает работать? Проблема в том, что регистратор продолжает работать и поддерживает вашу программу. Я бы справился с этим, запустив регистратор как фоновый процесс.

С bash это будет ./script.sh &, что заставит его работать без остановки остальной части программы.

Надеюсь, это может дать вам представление! Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...