Ranjan Maitra:
Wietse Venema:
Corrected code follows (missing do/done).
Save to file, chmod +x name-of-file, don't run this script from cron.
It needs to be started at boot time, or before you make a VPN
connection.
#!/bin/sh
while :
do
ifconfig xxx | egrep 'UP|DOWN'
sleep 2
done | while read status
do
case "$status" in
*UP*) if [ "$prev" -ne up ]
then
prev=up
postconf -X defer_transports
postfix reload
fi;;
*) if [ "$prev" -ne down ]
then
prev=down
postconf defer_transports=smtp
postfix reload
fi;;
esac
done
Wietse
line 10: [: : integer expression expected
Line10: is the following line:
*UP*) if [ "$prev" -ne up ]
Wietse wrote earlier that this was "totally untested code".
You should replace the two "-ne" with "!=".
Also, $prev has not been assigned the first time the second loop ("while
read status do ... done") is executed. So you should add "prev=down"
before the "while :".
Finally, note that you should also replace the "xxx" (in "ifconfig xxx")
with the actual name if your VPN interface, typically "tun0" or "tap0".
Gregory