Установите время выполнения команды сценария для записи активности терминала

Я не могу проверить это прямо сейчас, но я совершенно уверен, что sendmailпонимает записи в /etc/aliasesформы

fred: fred, fred@otherserver

(Если он входит в безумный цикл, добавьте ко второму fredобратную косую черту \.)

Затем это прямое извлечение из /etc/passwdв файл aliases. И не забудьте запуститьnewaliases(? )для обновления внутренней sendmailбазы данных.

Вот пример фрагмента для создания строк, которые будут добавлены. Он рассматривает только пользователей, чей UID находится в диапазоне {1000 ≤ uid < 65000}.

[ ! -f /etc/aliases.save ] && cp -p /etc/aliases /etc/aliases.save

(
    cat /etc/aliases.save
    echo
    getent passwd |
        awk -F: '$3>=1000 && $3<65000 {printf "%s: %s, %s@mx2.mydomain.com\n", $1, $1, $1}'
) >/etc/aliases

newaliases
1
14.12.2020, 15:10
1 ответ

Команда scriptоткрывает новую оболочку. Поэтому он закрывается как обычная оболочка. Выход по времени недоступен, так как оболочка в том виде, в каком вы ее используете (IIUC ), является интерактивной. Он выходит при «выходе» или Ctrl + d .

Если входные данные поступают из сценария, все, что указывает на конец текстового/передачи/входного файла, также приведет к завершению работы оболочки.

Можно работать с сигналами для выхода из этой оболочки, но для этого потребуется контролирующий сценарий. Из справочной страницы bash:

The shell exits by default upon receipt of a SIGHUP

Таким образом, если бы вы могли запустить оболочку и зафиксировать идентификатор ее процесса, это полностью остановило бы ее:

kill -HUP $SHELLPID

Вот скрипт, который должен это сделать:

#!/bin/bash

date=`date +%Y-%m-%d-%H%M`
logfile=`mktemp /tmp/terminal-log-${date}-XXX`

# call shell - try gnome-terminal if you prefer it
# gnome-terminal -- /usr/bin/script --quiet $logfile
xfce4-terminal --execute /usr/bin/script --quiet $logfile

ourpid=`readlink /proc/self`
scriptpid=`ps auxfw | grep -w $logfile | grep -v grep | awk '{print $2}'`
shellpid=`ps auxfw | grep -w --after=1 $logfile | grep -w --after=1 $scriptpid | tail -1 | awk '{print $2}'`

# feel free to delete this debug output
echo terminal started, script pid is $scriptpid, shell pid is $shellpid 

# sleep before stopping the shell - adjust time freely
sleep 10m

# flush script, just to be sure
kill -SIGUSR1 $scriptpid

# kill shell (cleanly, script and terminal should exit, too)
kill -HUP $shellpid
0
18.03.2021, 22:43

Теги

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