> On 07 September 2017 at 16:37 Dan Williams <[email protected]> wrote:
> 
> On Thu, 2017-09-07 at 09:31 +0100, Colin Helliwell wrote:
> 
> > > On 06 September 2017 at 17:18 Dan Williams <[email protected]> wrote:
> > > 
> > > On Wed, 2017-09-06 at 12:51 +0100, Colin Helliwell wrote:
> > > 
> > > > > On 06 September 2017 at 11:14 Thomas Haller <[email protected] >
> > > > > wrote:
> > > > > 
> > > > > On Wed, 2017-09-06 at 10:20 +0100, [email protected]
> > > > > om
> > > > > wrote:
> > > > > 
> > > > > > I'm python-scripting to get a connection's gsm properties,
> > > > > > and
> > > > > > want
> > > > > > to get
> > > > > > the password - which "c.for_each_setting_value(print_values,
> > > > > > None)"
> > > > > > seems to
> > > > > > not report (just "None").
> > > > > > What would be the technique to get it?
> > > > > > Thanks
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > on D-Bus, secrets are exposed separately from regular
> > > > > properties of
> > > > > the
> > > > > connection.
> > > > > 
> > > > > GetSettings() vs GetSecrets() in
> > > > > https://developer.gnome.org/NetworkManager/stable/gdbus-org.fre
> > > > > edes
> > > > > ktop.NetworkManager.Settings.Connection.html
> > > > > 
> > > > > Anyway, from libnm (and python gi) you would call
> > > > > 
> > > > > secrets = remote_connection.get_secrets('ethernet')
> > > > 
> > > > Great, got that. Now, don't suppose you could help me get to
> > > > grips
> > > > with parsing the Glib.Variant....? ;)
> > > 
> > > You can get around the need for touching GVariant by passing what
> > > you
> > > get from get_secrets() to NMConnection's replace_settings() call
> > > too.
> > > Then you get a nice NMConnection object, with only the secrets
> > > filled
> > > in. For example, pass a connection UUID as the argument to this:
> > > 
> > > #!/usr/bin/env python
> > > import gi
> > > gi.require_version('NM', '1.0')
> > > from
> > > gi.repository import GLib, NM
> > > import sys
> > > 
> > > client = NM.Client.new(None)
> > > c = client.get_connection_by_uuid(sys.argv[1])
> > > wifi_secrets =
> > > c.get_secrets(NM.SETTING_WIRELESS_SECURITY_SETTING_NAME)
> > > wifi_secrets_con = NM.SimpleConnection.new()
> > > wifi_secrets_con.replace_settings(wifi_secrets)
> > > wsec = wifi_secrets_con.get_setting_wireless_security()
> > > print "%s" % wsec.get_psk()
> > 
> > Thanks Dan, that gets it.
> > Now I'm struggling to *modify* the password.... :S I see that I can
> > do a
> >  settings.set_property(NM.SETTING_GSM_PASSWORD, "NewPw")
> > but unsure how to complete the updating. I found
> > NM.Connection.replace_settings(), and update_secrets(), but both of
> > those put me back into GVariant territory.
> > What would be the route to get the new password fed back through
> > (presumably prior to finishing with a
> > NM.RemoteConnection.save()/commit()?)
> 
> You're correct. Here's what I'd do:
> 
> client = NM.Client.new(None)
> c =
> client.get_connection_by_uuid(sys.argv[1])
> secrets =
> c.get_secrets(NM.SETTING_WIRELESS_SECURITY_SETTING_NAME)
> 
> # this merges
> the secrets into the existing connection
> c.update_secrets(NM.SETTING_WIR
> ELESS_SECURITY_SETTING_NAME, secrets)
> 
> 
> 
> # write the full connection back to NM
> c.save()

Thanks, I'll work through that in due course, but just to step back a bit to 
something perhaps simpler (which may help my understanding in general!) I've 
just been trying to modify some other gsm settings. All is good until trying to 
write the changes to the connection file 
(/etc/NetworkManager/system-connections/):
c.save() does write to the file (I see the timestamp is changed), but the 
setting itself is unchanged, whereas
c.commit_changes(True,None) *does* alter the setting in there.

Just wondering therefore what save() is intended for, and/or whether it needs 
to be used in a different way?
No problem to use commit_changes() instead, but save() doesn't seem to be doing 
what the docs imply: "Saves the connection to disk if the connection has 
changes that have not yet been written to disk, or if the connection has never 
been saved"

AND, just to get my next question in while I'm at it :)   - What are the calls 
to do a down/reload/up on the connection? (i.e. I'll have changed the gsm 
settings from incorrect apn etc to correct, and want pppd to be kicked into a 
re-connect)

Thanks!
_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to