Как предотвратить оболочку PuTTY от автоматического выхода после выполнения команды из командного файла в Windows?

Я написал пакетный файл следующим образом:

Start putty.exe -ssh 172.17.0.52 -l root -m dummy.txt

Тогда в dummy.text я написал эту команду:

avahi-daemon --no-drop-root -D
export XVHMI_USERCONFIG_PATH=/home/UserProfileConfig
export XDG_RUNTIME_DIR=/tmp
cd /opt/bosch/airis/bin

Когда я запускаю .bat файл, PuTTY запускается, команды выполняются (надеюсь, не уверены) и выходят.

Как сохранить это окно открытым?

У меня есть googled для того же самого, но никакой твердой помощи. Я читал о переполнении стека, что нам нужно определить что-то в txt файле, но что и самое главное, как?

Ответ 1

Сессия SSH закрывается (и PuTTY с ней), как только команда заканчивается. Обычно "команда" - оболочка. Поскольку вы переопределили эту команду по умолчанию, но все же вы хотите запустить оболочку, вы должны явно выполнить оболочку самостоятельно:

avahi-daemon ... ; /bin/bash

Также, поскольку использование переключателя -m подразумевает неинтерактивный терминал, вы, вероятно, захотите принудительно отключить интерактивный терминал, используя переключатель -t.


Хотя, я не уверен, хотите ли вы запускать оболочку или просто хотите увидеть свой вывод команды. Если последнее, рассмотрели ли вы использование plink? Это консольный клиент терминала из пакета PuTTY. Будучи консольным приложением, он наследует консоль родительского пакетного файла, и вы можете приостановить запуск командного консоля с помощью команды pause, если это необходимо.

Другим вариантом (как для PuTTY, так и для plink) является пауза на удаленной стороне. Например. Используя команду read.

avahi-daemon ... ; read

Ответ 2

Как предложил Мартин, я пробовал этот шаг:

  • putty.exe -ssh 172.17.0.52 -l root -m dummy.txt -t

  • добавлен/bin/bash в конце команд в dummy.txt

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