Ok, na dica de um amigo que apontou outra resposta SU para uma pergunta relacionada ( Usando o iptables para redirecionar o endereço IP ), e algumas experimentações e tentativas e erros, eu descobri. Aqui está, no caso de ajudar alguém a sair também:
O truque é usar iptables
NAT . Primeiro, escolhemos nosso IP (não atribuído / disponível) para usar como nosso alias. Algo como 192.168.0.201 (algo que você sabe que o roteador não estará usando). NOTA: não usa o intervalo 127.0.0.x porque não funcionará!
Depois, você adiciona isso à definição sane
do scanner. No meu caso, o arquivo é /etc/opt/brother/scanner/brscan4/brsanenetdevice4.cfg
. Então eu adicionei esta linha:
DEVICE=brother-scanner-avahi-alias , "MFC-avahi-alias" , Unknown , IP-ADDRESS=192.168.0.201
Eu criei um script contendo o seguinte:
ALIAS_IP=192.168.0.201
BROTHER_UNIQ_STR=MFC-YOUR-MODEL-HERE
BROTHER_SCANNER_IP='avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN {FS=";"} /^=/ { print $8}''
# $7 is the .local hostname
# avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN {FS=";"} /^=/ { print $7, $8}'
# to complete this: iptables-save >/somepath/iptables.save Add to cron upon start up iptables-restore </somepath/iptables.save
########
echo Brother scanner IP: \'$BROTHER_SCANNER_IP\'
if [[ $BROTHER_SCANNER_IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
# enable IP forwarding in kernel:
sysctl net.ipv4.ip_forward=1
# To make it permanent, edit /etc/sysctl.conf and ensure that the line "net.ipv4.ip_forward = 1" is there and not commented out.
iptables -t nat -A OUTPUT -d $ALIAS_IP -j DNAT --to-destination $BROTHER_SCANNER_IP
# Print the OUTPUT rules after our changes:
# iptables -t nat -L
iptables -t nat -L OUTPUT
# If you really mess up, or want to get rid of all your rules (careful with this command!!)
# TO DELETE ALL RULES ("F"lush) run: iptables -t nat -F OUTPUT
else
echo
echo "ERROR: bad ip address"
echo
exit 1
fi
Execute esse script e, agora, sane
poderá detectar seu scanner por meio do endereço IP do alias. Você pode adicionar o script a uma tarefa cron ou a um script de inicialização (autostart ou o que seu sistema usar), e isso cuidará de tudo para você sempre.
O script deve ser executado como superusuário (root) ou sudo.
Espero que ajude alguém lá fora.