Необходимо указать, что правило должно войти nat
таблица, дополнительно команды DNAT должны пойти цепочка PREROUTING, и необходимо быть осторожными, что Вы не генерируете цикл.
iptables -t nat -I PREROUTING -i br-lan -s ! 192.168.1.196 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.196:3128
Таблица по умолчанию filter
таблица.
Не забывайте, что Вам также нужен MASQUERADE/SNAT для перезаписи исходного адреса:
iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE
Это ПРАКТИЧЕСКОЕ РУКОВОДСТВО предоставляет больше возможностей и объяснений.
Есть два основных способа:
PROMPT_SUBST
psvar
Если PROMPT_SUBST
включен
setopt PROMPT_SUBST
, подсказка подвергается расширению параметров, подстановке команд и арифметическому расширению перед оценкой.
Таким образом, вывод сценария может быть включен с помощью подстановки команд. Например:
PROMPT='Look at this: $(python yourscript.py) >'
Если вывод содержит escape-последовательности (% ~
, % M
, % F {red}
и т. Д.), Они будут оценены перед напечатана подсказка.
Одно из первых девяти значений массива psvar
может быть установлено для вывода сценария. Затем его можно вызвать, используя % Xv
, где X
- это число от 1 до 9 (по умолчанию 1, если X
не указано).
psvar[5]=$(python yourscript.py)
PROMPT='Look at this: %5v >'
Чтобы обновлять значение каждый раз перед выводом подсказки, необходимо установить функцию ловушки precmd
:
precmd() {
psvar[5]=$(python yourscript.py)
}
Если уже существует функция precmd
, или если нужно использовать более одной функции, рекомендуется использовать add-zsh-hook
.
# load add-zsh-hook, need to be done only once
autoload -Uz add-zsh-hook
pyscript() {
psvar[5]=$(python yourscript.py)
}
add-zsh-hook precmd pyscript
Это добавляет pycript
в список функций, которые необходимо запустить перед печатью приглашения.
Вы можете сделать это, установив крючок precmd
, который примет вывод команды и отформатирует его так, как вы хотите, а затем сделает его доступным для вашего PROMPT. Минимум, Вам нужно:
autoload -U add-zsh-hook
add-zsh-hook precmd my_precmd_hook_function
Определить my_precmd_hook_function
, чтобы вызвать Ваш питоновый скрипт и захватить его вывод в переменную. Затем вы можете использовать эту переменную в вашем $PROMPT:
my_precmd_hook_function() {
python_says=$(myPythonScript arg1 arg2)
}
PROMPT='$python_says'
Вы можете установить столько переменных, сколько вам нужно в вашем precmd
крюке и использовать их для построения довольно сложного PROMPT. Просто имейте в виду, что чем больше Вы делаете в precmd
крюке, тем дольше потребуется zsh
, чтобы отрисовать подсказку и вернуть Вам управление. Если ваш питоновый скрипт более чем тривиально проста, вы, несомненно, заметите отставание.
Вы можете увидеть весь спектр возможностей в разделе SIMPLE PROMPT ESCAPES
man page zshmisc
.