nc :команда запуска при подключении

Хотя по умолчанию zsh выдает ошибку, это управляется параметром nomatch. Вы можете отключить опцию, чтобы оставить *на месте, как это делают bash и тире:

setopt -o nonomatch

Хотя эта команда не будет работать ни в одной из других команд, вы можете просто игнорировать ее:

setopt -o nonomatch 2>/dev/null || true ; set *

Это запускает setoptна zsh и подавляет вывод ошибки(2>/dev/null)и код возврата(|| true)неудачной команды на остальных.

Как написано, это проблематично, если есть файл, например, -e:, тогда вы запустите set -eи измените параметры оболочки, чтобы завершить работу при сбое команды; есть худшие результаты, если вы творческий. set -- *будет безопаснее и предотвратит изменение параметров.

0
26.01.2021, 11:20
1 ответ

Нужно проверить, появляется ли слово «Соединение» в стандартной ошибке nc. Вы можете перенаправить stderr в именованный канал и выполнить поиск по этому каналу:

mkfifo nc-stderr
nc -lnvp $PORT 2>nc-stderr

В другом приглашении командной строки:

grep -q 'Connection.*accepted' nc-stderr && notify-send "a connection was accepted"
0
18.03.2021, 22:34

Теги

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