This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Best way to bulk update local user across multiple UTMs

We're using the UTM Manager, but I don't see a way to do this from there.

What I'd like to do is to reset the 'admin' user and another local user's passwords across all of our UTM 9's. We've got at least a dozen in the field, and I'd like to make this procedure something that could be done in just a few minutes.

UPDATES:
With help from teched I've started working on a configuration script.



This thread was automatically locked due to age.
Parents
  • Kudos for setting up a test UTM to perform testing.

    The command I suggested should work fine when run from a command line directly on the UTM: it was quick and dirty.

    On the "errors": The local shell is performing the backtick (``) substitution instead of passing it through ssh to the remote shell.  The local system is attempting to run "cc get_objects_filtered...".    "cc" on the local system (C compiler) not at all "cc" on the remote system. Also the UTM OS isn't apt based so the apt messages didn't come from the UTM.

    On the UTM cc is merely an bash alias in /etc/profile so you'll need to use the proper name confd-client.plx for remote usage.


    With some quoting and escaping adjustments and a process substitution (printf/iconv) replaced with a pipe:

    confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` md4hash `printf "newtapassword" | iconv -f ASCII -t UTF-16LE | openssl dgst -md4 | cut -f 2 -d \ `


    Wrap in single quotes to shield the backticks from local interpretation for passing to remote host via command line SSH:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` md4hash `printf "newtapassword" | iconv -f ASCII -t UTF-16LE | openssl dgst -md4 | cut -f 2 -d \ `'



    The same types of changes should make the enable/disable user command remote friendly (internal quoting/escaping adjustments and wrapped in single quotes):

    Disable:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` enabled 0'


    Enable:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` enabled 1'
Reply
  • Kudos for setting up a test UTM to perform testing.

    The command I suggested should work fine when run from a command line directly on the UTM: it was quick and dirty.

    On the "errors": The local shell is performing the backtick (``) substitution instead of passing it through ssh to the remote shell.  The local system is attempting to run "cc get_objects_filtered...".    "cc" on the local system (C compiler) not at all "cc" on the remote system. Also the UTM OS isn't apt based so the apt messages didn't come from the UTM.

    On the UTM cc is merely an bash alias in /etc/profile so you'll need to use the proper name confd-client.plx for remote usage.


    With some quoting and escaping adjustments and a process substitution (printf/iconv) replaced with a pipe:

    confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` md4hash `printf "newtapassword" | iconv -f ASCII -t UTF-16LE | openssl dgst -md4 | cut -f 2 -d \ `


    Wrap in single quotes to shield the backticks from local interpretation for passing to remote host via command line SSH:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` md4hash `printf "newtapassword" | iconv -f ASCII -t UTF-16LE | openssl dgst -md4 | cut -f 2 -d \ `'



    The same types of changes should make the enable/disable user command remote friendly (internal quoting/escaping adjustments and wrapped in single quotes):

    Disable:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` enabled 0'


    Enable:
    'confd-client.plx change_object `confd-client.plx get_objects_filtered "\$_->{data}->{name} eq \"testadmin\"" | pcregrep -o REF_AaaUse[A-Za-z]*` enabled 1'
Children
  • ...

    The command I suggested should work fine when run from a command line directly on the UTM: it was quick and dirty.

    ...


    That's what I was suspecting. It was reminding me of an issue once upon a time when I was trying to 'stuff' things to a screen.

    I was able to successfully execute `cc passwd newpassword` to change the admin user, so I knew it was an issue with the complexity of the command.

    Also, I hadn't fully appreciated the other two commands you listed, perhaps someday we'll get to a point where each of our team members has their own login for the dozen-or-so UTM's in the field, disabling en masse is a good tool to have. Next thing to figure would be adding a new user, and adding them to a group...

    Finally, I do feel that I have some responsibility to say that I THINK THIS IS ALL A VERY DANGEROUS PROJECT AND THE REASONABLE PART OF ME DOES NOT WANT TO GO LIVE WITH IT. I wish these actions were possible via the SUM, and if nothing else, I'm taking this opportunity to roll my own linux configuration management script, which is helping me appreciate things like Ansible and Chef, which I'm starting to explore.