Думал бы, что Вы добавляете их то же, как Вы были бы с iptables. Вот быстрый документ о IPF все же. http://www.freebsd.org/doc/handbook/firewalls-ipf.html
Не легко.
Можно получить (удаленный) временный файл и иметь fd, открытый на нем с:
exec 3<<EOF
whatever
EOF
Но Вы не можете записать в него позже и нет никакой команды, которая может сделать Вас seek
назад на fd.
Можно попытаться реализовать его вручную:
mktemp() (
prefix=$1
i=0; suffix=
set -C
until
file=$prefix$suffix
error=$({ : > "$file"; } 2>&1)
do
if [ ! -e "$file" ] && [ ! -L "$file" ]; then
# that probably failed for another reason than noclobber. Give up.
printf >&2 'Cannot create "%s": %s\n' "$file" "$error"
return 1
fi
i=$(($i + 1))
suffix=.$i
done
printf '%s\n' "$file"
)
Если Вы хотите некоторую случайность в имени файла, awk
получил a rand()
с которым можно использовать printf("%c")
.
Лучше всего должен избежать временных файлов, если это возможно. Примите во внимание, что их очистка является почти так же болью как их создание.
Временные файлы являются проблемой безопасности, только если каждый создает их в общем каталоге такой как /tmp
или /var/tmp
. Для создания временного файла безопасным и надежным способом просто поместите его в каталог, как корневой каталог пользователя, где у других пользователей нет разрешения записи. Например:
tmpname=$HOME/.deleteme$$
some_command >"$tmpname"
При помощи необщего каталога уходят все проблемы условий состязания. (Если у взломщика уже есть доступ для записи к Вашему корневому каталогу, то Вы - pwned, и у взломщика нет потребности играть с временными файлами и условиями состязания.)
Чтобы удостовериться, что временный файл удален, создайте прерывание
trap 'rm -f "$tmpname"' EXIT
Оператор прерывания должен быть помещен в сценарий, прежде чем временный файл будет создан.