В зависимости от ваших потребностей,одно простое решение может быть:
set > tmp
или set > /tmp/current
diff -u <(cat tmp) <(set)
или diff -u <(cat tmp) <(set) | tail -n +3 | grep -v PIPESTATUS | grep -v "_=" | grep -E "^\+"
Где:
tail -n +3
:удалить первую ненужную строку команды diff
grep -v PIPESTATUS | grep -v "_="
:удалить ненужные переменные
grep -E "^\+"
:отображать только требуемые/необходимые изменения
Альтернатива:
diff -u <(set -o posix; set) <(bash -lc 'set -o posix; set') | grep -E "^\+"
Примечание:
В вашем скрипте обратите внимание, что exec
полностью замените процесс, из которого он запущен, это может помешать тому, чего вы пытаетесь достичь
Когда правила iptables проверяются, они идут в порядке ввода правил через все правила. Поэтому, на мой взгляд, вы должны сначала принять трафик из/в 10.0.0.1, а затем отклонить весь остальной трафик из подсети. Когда у вас будет трафик для 10.0.0.1, он будет принят по первому правилу, а все остальное будет отклонено по второму правилу. Так,Я бы написал что-то вроде этого:
iptables -t INPUT -s 10.0.0.1 -j ACCEPT
iptables -t INPUT -s 10.0.0.0/8 -J REJECT
iptables -t OUTPUT -d 10.0.0.1 -j ACCEPT
iptables -t OUTPUT -d 10.0.0.0/8 -J REJECT
Это всего лишь дополнение к другим правилам, которые уже должны быть в наличии. Я предполагаю, что вы используете 255.0.0.0, так как это значение по умолчанию для сетей 10.X.X.X. Если нет, используйте другую сетевую маску. Я также не уверен, достаточно ли просто указать источник (-s )и пункт назначения (-d ). Возможно нужно добавить сетевой интерфейс (-i ), протокол (-p )и т.д.