Выполнить команду с помощью ssh и предотвратить закрытие соединения (с помощью Control + C)

Однофайловые двоичные программы установки, которые я видел в Linux, были .sh файлами, содержащими сценарий оболочки, скомпонованный с двоичным блобом, как это:

#!/bin/bash
tmpdir=$(mktemp -d /tmp/installer.XXX)
tail -n +6 "$0" | tar -xJf - -C "$tmpdir" || exit 1
sudo "$tmpdir/setup.sh"
rm -rf "$tmpdir"
exit
[binary content follows]

По сути, это эквивалентно setup.exe, который также самораспаковывается во временную папку и запускает оттуда настоящую программу установки.

1
06.09.2017, 21:53
1 ответ

Этого не должно происходить. sshдолжен отключить генерацию сигнала в терминале.

Вы можете попытаться перехватить SIGINTв оболочке, которая вызывает ssh

trap '' SIGINT

, но и тогда процессы на другой стороне не получат сигнал

. ^Cдо sshнажатием

^V^C

^Vобычно является символом "цитирования" для терминала, то есть вместо интерпретации ^C как для генерации сигнала, он просто передается буквально.

0
28.01.2020, 00:49

Теги

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