Скрипт для отправки команд по ssh, а не ожидания и выхода из терминала

Debes montar en /media/user_name/disk_name, reemplazando user_namecon tu nombre de usuario, y disk_nameen lo que quieras, no en /mnt.

Puede usar la opción x-mount.mkdirpara crear automáticamente la carpeta disk_name. Todavía no sé cómo hacer que la carpeta se elimine automáticamente al desmontar.

PD. Probado en Linux Mint 18.3 con el administrador de archivos Nemo.

1
08.05.2019, 04:32
1 ответ

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

Если да

script="sh -c \"nohup sh -c '$SCRIPT1' > /dev/null 2>&1 & \""
sshpass -e ssh -n -o StrictHostKeyChecking=no -l $targets_username $IP "$script"

он должен делать то, что вы хотите (обратите внимание на -nчтобы stdin оставался закрытым ). Вы можете убедиться, что соединение ssh действительно закрывается, добавив timeперед командой sshpass или запустив netstatв $SCRIPT1и проверив открытые соединения.

Вы должны убедиться, что все stdin, stdout и stderr закрыты, иначе sshбудет ждать, пока они не закроются, даже если процесс находится в фоновом режиме.

Если описанное выше не работает, может потребоваться дополнительная оценка аргументов командной строки с помощью sshpass. Кроме того, использование одинарных кавычек вокруг $SCRIPT1задерживает расширение, например. переменные оболочки внутри $SCRIPT1до удаленной стороны.

Теперь, несмотря на то, что вы можете выполнить задачу с помощью этого подхода, я бы рекомендовал вам использовать инструмент, предназначенный для такого рода автоматизации, например. Ансибл(https://docs.ansible.com/ansible/latest/index.html). При фоновом подходе вам придется вручную (или с помощью другого разработанного инструмента )проверять, была ли команда выполнена успешно или нет, или завершено ли ее выполнение.

1
28.01.2020, 00:12

Теги

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