分页: 1 / 1

[已解决]wicd1.7.2.4不能修改网络属性(按钮无效)问题

发表于 : 2013-08-04 23:01
rzr
系统是ubuntu12.04,安装在硬盘上的。今天改用了wicd管理网络链接,然后发现在连接路由时,要求输入密码,在弹出的属性页面中输入按确定后,属性页面不能关闭,按取消按钮也无法关闭,只能通过按右上角的x按钮关闭。关闭之后,再选择对应无线网络,点连接,也还是要求输入密码,在打开的属性页面下再次输入密码,无论点确定按钮,还是取消按钮,属性页面还是没有关闭,同时wicd管理界面都会卡住,过一会后直接退出。
后来是直接修改/etc/wird下的无线网络配置文件才上了网。不知道这种情况有没有解决的方法呢?

Re: ubuntu12.04下wicd不能修改属性

发表于 : 2013-08-05 10:52
rzr
  在终端下运行wicd-gtk,然后选某个网络进行属性设置,按下ok按钮后,终端上会出现以下提示:

代码: 全选

Traceback (most recent call last):
  File "/usr/share/wicd/gtk/gui.py", line 666, in edit_advanced
    if self.run_settings_dialog(dialog, ttype, networkid, networkentry):
  File "/usr/share/wicd/gtk/gui.py", line 679, in run_settings_dialog
    if self.save_settings(nettype, networkid, networkentry):
  File "/usr/share/wicd/gtk/gui.py", line 644, in save_settings
    if not networkentry.save_wireless_settings(networkid):
  File "/usr/share/wicd/gtk/netentry.py", line 940, in save_wireless_settings
    return self.advanced_dialog.save_settings(networkid)
  File "/usr/share/wicd/gtk/netentry.py", line 591, in save_settings
    encrypt_methods[self.combo_encryption.get_active()]['type'])
  File "/usr/share/wicd/gtk/netentry.py", line 532, in set_net_prop
    wireless.SetWirelessProperty(self.networkID, option, value)
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Python.TypeError: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/dbus/service.py", line 707, in _message_cb
    retval = candidate_method(self, *args, **keywords)
  File "/usr/share/wicd/daemon/wicd-daemon.py", line 1067, in SetWirelessProperty
    prop = misc.sanitize_config(prop)
  File "/usr/local/lib/python2.7/dist-packages/wicd/misc.py", line 433, in sanitize_config
    return s.translate(None, table)
TypeError: translate() takes exactly one argument (2 given)
  将最后的那句错误提示复制到google上,在下面的网址里发现了参考的解决方法:https://bbs.archlinux.org/viewtopic.php?pid=1097401
  看里面的讨论,貌似是代码的问题,可行的修改方法有两个:
  方法一:看终端提示里,出错前,在/usr/share/wicd/daemon/wicd-daemon.py里的第1067行调用了misc的sanitize_config(prop)方法,对此作以下修改:
  原 :

代码: 全选

prop = misc.sanitize_config(prop)
  改为:

代码: 全选

prop = misc.sanitize_config(str(prop))
  修改完毕后,终端下输入sudo service wicd restart后,即可解决问题。
  方法二:看终端提示,出错前,调用了/usr/local/lib/python2.7/dist-packages/wicd/misc.py中的sanitize_config方法,定位到该方法的定义处,并作以下修改:
  原 :

代码: 全选

def sanitize_config(s):
        """ Sanitize property names to be used in config-files. """
        allowed = string.ascii_letters + '_' + string.digits
        table = string.maketrans(allowed, ' ' * len(allowed))
  
        return s.translate(None, table)
  改为:

代码: 全选

def sanitize_config(s):
        """ Sanitize property names to be used in config-files. """
        allowed = string.ascii_letters + '_' + string.digits
        table = string.maketrans(allowed, ' ' * len(allowed))
  
        return str(s).translate(None, table)
  其实就是最后一句修改了。
  之后在终端运行sudo service wicd restart,即可解决问题。