スキップしてメイン コンテンツに移動

NetworkManager proxy設定 dispatcher

proxyだって?どこの田舎よ?

/etc/NetworkManager/dispatcher.d/99-proxy
#!/bin/bash

PATH=/bin:/usr/bin:/sbin

if [ ! -f /etc/sysconfig/proxy ]; then
  exit
fi
. /etc/sysconfig/proxy

if [ x"$2" = x"down" ]; then
  exit
fi

i=0
while [ "x$(eval echo '$'PROXYTARGET$i)x" != "xx" ]; do
  for t in `echo $(eval echo '$'PROXYTARGET$i) | sed s/:/\ /g`; do
    if [ x"$t" = x"$CONNECTION_ID" ]; then
      PROXY=$(eval echo '$'PROXYTARGET${i}_PROXY)
      NO_PROXY=$(eval echo '$'PROXYTARGET${i}_NO_PROXY)
      break
    fi
  done
  if [ -n "$PROXY" ]; then
    break
  fi
  let i=$i+1
done

if [ -n "$PROXY" ]; then
  PROXY=`echo $PROXY | sed s,http://,,`
  HOST=`echo $PROXY | cut -d: -f1`
  PORT=`echo $PROXY | cut -d: -f2|sed s,/,,g`
fi

for pid in `pgrep gnome-session`; do
  uid=`cat /proc/$pid/loginuid`
  uname=`getent passwd $uid | cut -d: -f 1`
  bus=`strings /proc/$pid/environ|grep DBUS_SESSION_BUS_ADDRESS`
  if [ -n "$PROXY" ]; then
    su -c "$bus gsettings set org.gnome.system.proxy mode manual" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.http host $HOST" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.http port $PORT" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.https host $HOST" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.https port $PORT" $uname
  else
    su -c "$bus gsettings set org.gnome.system.proxy mode none" $uname
  fi
done

/etc/sysconfig/proxy
PROXYTARGET0="プロファイル名:プロファイル名:プロファイル名"
PROXYTARGET0_PROXY="http://プロキシ:ポート/"
PROXYTARGET0_NO_PROXY="除外,リスト,たち"

PROXYTARGET? リストに一致するプロファイルに切り換えられたとき、ログインしている人のgnomeプロキシ設定を変更する。もちろん、gnome専用。
少なくとも、chromeは追従してくれるので大変便利。
追従しない子用には、libproxyを使うニセproxyをローカルに立てとけばよいかな...

コメント

このブログの人気の投稿

今日の都電

device-mapper-multipath

Jan 6 00:04:09 ovn2 kernel: [181703.837857] device-mapper: table: 253:0: multipath: error getting device Jan 6 00:04:09 ovn2 kernel: [181703.838212] device-mapper: ioctl: error adding target to table Jan 6 00:04:09 ovn2 multipathd: dm-0: remove map (uevent) Jan 6 00:04:09 ovn2 multipathd: dm-0: remove map (uevent) ぐぬぬ
[root@ovn2 multipath]# multipath Jan 06 00:04:16 | ADATA_SX300_2D3920001647: ignoring map [root@ovn2 multipath]# echo "blacklist { > wwid ADATA_SX300_2D3920001647 > }" >> /etc/multipath.conf [root@ovn2 multipath]# service multipathd restart Redirecting to /bin/systemctl restart multipathd.service [root@ovn2 multipath]# multipath [root@ovn2 multipath]# すっきり!