Tôi có chương trình golang của mình đang chạy dưới dạng dịch vụ gốc và tôi đang cố đặt cài đặt proxy bằng lệnh gsettings trong chương trình của mình. Tôi có thể đọc các cài đặt này trong chương trình golang của mình bằng mã lệnh sau trong golang:
u, erru:= user.Lookup("dimdimuser")
nếu sai != nil {
return "",fmt.Errorf("thông tin người dùng không xác định")
}
uid, err = strconv.ParseInt(u.Uid, 10, 32)
gid, err = strconv.ParseInt(u.Gid, 10, 32)
cmd := exec.Command("/usr/bin/gsettings", "get", "org.gnome.system.proxy", "autoconfig-url")
cmd.Stdout = &out
cmd.Stderr = &stderr
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
err = cmd.Run()
nếu sai != nil {
return "", fmt.Errorf("Thất bại '/usr/bin/gsettings' %s %s ", getOrSet, tùy chọn)
}
trả về.String(), nil
nhưng khi tôi đang cố gắng đặt các cài đặt này thì lệnh không báo lỗi nhưng cài đặt không thay đổi. đây là mã mà tôi đang cố đặt autoconfig-url:
cmd := exec.Command("/usr/bin/gsettings", "set", "org.gnome.system.proxy", "autoconfig-url","HTTP://localhost/dimdimproxy")
cmd.Stdout = &out
cmd.Stderr = &stderr
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
err = cmd.Run()
nếu sai != nil {
return "", fmt.Errorf("Thất bại")
}
trả về.String(), nil
Tôi đã thử sử dụng dbus-launch, thao tác này sẽ thay đổi cài đặt nếu tôi đang cố truy xuất từ chương trình của mình hoặc trên tab thiết bị đầu cuối khác có đặc quyền người dùng cục bộ. nhưng giao diện người dùng gnome không được phản ánh. và cả trình duyệt hệ thống cũng không chấp nhận những thay đổi được thực hiện bằng lệnh sau.
sudo -Hu dimdim dbus-launch gsettings set org.gnome.system.proxy autoconfig-url htt://localhost/dimdimproxy