Хотелось бы узнать, есть ли способ создать оболочку входа в систему и отобразить сообщение для пользователя. Правила:
- пользователь имеет свой собственный ~ / .bashr c, и мы не хотим его перезаписывать
- избегайте использования канала в подпроцесс
Что я делаю atm:
def do_bash(tokens, state):
"""
Drop into system shell or execute shell commands. Examples:
- bash
- bash -c "ls ~/.* | grep shell"
"""
cmd = ["bash", "-l"]
if len(tokens):
cmd.extend(tokens)
subprocess.call(cmd)
Я попытался объединить -l
с -c echo "<message>"
, но это только отображает сообщение в новой оболочке и затем возвращает.
UDPATE : Чтобы упростить это - я хочу выполнить subprocess.call(["bash", "-l", "<magic I am not sure of>"])
и с точки зрения пользователя:
$ python ./mycode.py
I0000 03:16:11 [mycode] Various logging messages until subprocess is called
You have dropped into a temporary shell but you are still
within "mycode.py" program. You can use "exit" to continue
running the script. This shell allows to you to do foo and bar.
bash$