2013-01-02 103 views
0

我使用gsettings工具来自动设置系统代理设置代理[系统设置 - >网络代理],所以我做了这些线条简单的bash脚本:通过bash脚本在Ubuntu

gsettings set org.gnome.system.proxy mode 'auto' 
//for another mode 
gsettings set org.gnome.system.proxy mode 'none' 

我将此脚本放置在/etc/network/if-up.d中,因为我希望脚本在笔记本电脑连接到互联网时运行。我将脚本的副本保存在我的主文件夹中,当我运行副本时,脚本似乎能够正常工作,但是当我在/ etc/network/if-up中运行脚本时,我可以看到网络代理窗口中的更改。 d文件夹中,由于某些原因,这些设置似乎不适用。我在这里错过了什么?

+0

嗨,你让你的脚本工作? – emil

+0

没有@emil,我试过你的解决方案,但它不工作:/ –

+0

你是否尝试过我的最新评论,我的答案是手动运行sudo -s等?你有任何错误信息?否则,你可以使用'env'打印所有的环境变量,并尝试设置一些/全部,直到你成功。最后的选择可能是使用'strace gsettings args'并比较输出。 – emil

回答

0

我终于使脚本工​​作!这是一个星期,因为我陷入gsettings工具。现在,我想完成的是运行gsettings工具来为用户设置代理,尽管执行该操作的bash脚本是由root拥有的,因此只有根环境变量。现在,这可以推广到任何命令,运行commad作为一个特定的用户,我们可以这样做:

su username -c "command to execute" 
#replace username by your username in the bash script 

如果命令包含只差一个字,双引号会被删除。我太高兴了。我不需要切换配置文件,并且每次连接到互联网时都要手动设置代理配置[IP地址等]。

希望这可以帮助有类似问题的人:D

+0

你确定你是指'sudo'而不是'su'?以下语法可以在手册'sudo(8)'或'su(1)':'sudo -u username command'或'su username -c command'中找到。 – emil

+0

哦,我真的很抱歉@emil,它应该是'苏'我刚刚检查了脚本。我会马上编辑答案。感谢您指出! –