Jeg har en udfordring omkring automatisk opsætning af proxy. På min arbejdsplads har vi nu skudt en proxy ind som man skal gå igennem for at komme på nettet. Dette er jo i sig selv en god ting, men gør nogle ting lidt mere besværlige. I den forbindelse tænkte jeg at jeg ville brygge et lille script samme, som vil, ud fra min ip adresse, slå proxy til eller fra. Scriptet kører når NetworkManager "up'er" et interface.
Scriptet ser ud som følger:
Kode: Vælg alt
#!/bin/sh
# Source: http://ubuntuforums.org/showthread.php?t=564538
#
# Enable/disable proxy based on network interface address
logger "Proxy script start"
logger $IFACE $MODE
set -e
IFACE=eth0
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
exit 0
fi
#Only run from ifup.
if [ "$MODE" != start ]; then
exit 0
fi
#Execute gconf commands as this user
U=`w|grep gnome-session| awk '{print $1}'`
if [ -z "$U" ]; then
logger "Exit script finding user"
exit 0
fi
IP=`ip addr show dev $IFACE | grep 'inet ' | awk '{print $2}'`
logger $IP
ENABLED=""
PROXY="http://bluecoat/accelerated_pac_base.pac"
case "$IP" in
192.168.0*)
logger "Set proxy on...$U"
su $U -c '/usr/bin/gconftool --config-source=xml::/home/$U/.gconf -t bool -s /system/http_proxy/use_http_proxy true'
logger "Set proxy PAC..."
su $U -c '/usr/bin/gconftool --config-source=xml::/home/$U/.gconf -t string -s /system/proxy/mode auto'
logger "Set PAC url..."
su $U -c '/usr/bin/gconftool --config-source=xml::/home/$U/.gconf -t string -s /system/proxy/autoconfig_url $PROXY'
ENABLED="enabled"
;;
*)
su $U -c '/usr/bin/gconftool --config-source=xml::/home/$U/.gconf -t bool -s /system/http_proxy/use_http_proxy false'
su $U -c '/usr/bin/gconftool --config-source=xml::/home/$U/.gconf -t string -s /system/proxy/mode none'
ENABLED="disabled"
;;
esac
exit 0
Tager jeg scriptet og kører i hånden virker det fint (eller kører kommandoerne enkeltvis), settings bliver sat og proxy'en bliver brugt. Ligger jeg scriptet ind i "/etc/network/if-up.d" og aktiverer et interface får jeg følgende i syslog'en:
Kode: Vælg alt
...
Feb 4 09:28:41 laptop-tdd NetworkManager: <info> Policy set 'Auto eth0' (eth0) as default for routing and DNS.
Feb 4 09:28:41 laptop-tdd NetworkManager: <info> Activation (eth0) successful, device activated.
Feb 4 09:28:41 laptop-tdd NetworkManager: <info> Activation (eth0) Stage 5 of 5 (IP Configure Commit) complete.
Feb 4 09:28:42 laptop-tdd logger: Proxy script start
Feb 4 09:28:42 laptop-tdd logger: eth0 start
Feb 4 09:28:42 laptop-tdd logger: 192.168.240.77/24
Feb 4 09:28:42 laptop-tdd logger: Set proxy on...tdd
Feb 4 09:28:42 laptop-tdd nm-dispatcher.action: Script '/etc/NetworkManager/dispatcher.d/01ifupdown' exited with error status 1.
...
Ud fra logger kan jeg se at den når frem til at udføre den første gconftool kommando, men noget fejler ved den???
Nogle gode idéer?