• Recent
    • Unsolved
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Use serial number as hostname in Fog

    Scheduled Pinned Locked Moved FOG Problems
    23 Posts 4 Posters 3.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • george1421G
      george1421 Moderator @Xinzo
      last edited by george1421

      @xinzo Looking into the FOG programming code. I see here: https://github.com/FOGProject/fogproject/blob/171d63724131c396029992730660497d48410842/packages/web/lib/reg-task/registration.class.php#L328

      OK lets hack our way into a possible solution. Again the caveat here is I have not tried this so I have no clue if it works.

      But at this location: https://github.com/FOGProject/fogproject/blob/171d63724131c396029992730660497d48410842/packages/web/lib/reg-task/registration.class.php#L328 Line #328 there is this section of code.

                  $autoRegSysName = trim($autoRegSysName);
                  if (strtoupper($autoRegSysName) == 'MAC') {
                      $hostname = $this->macsimple;
                  } else {
                      $hostname = $autoRegSysName;
                  }
                  $hostname = trim($hostname);
                  if (!self::getClass('Host')->isHostnameSafe($hostname)) {
      

      I wonder if we can tweak it to look like this

                  $autoRegSysName = trim($autoRegSysName);
                  if (strtoupper($autoRegSysName) == 'MAC') {
                      $hostname = $this->macsimple;
                  } elseif (strtoupper($autoRegSysName) == 'SYSSERIAL') {
                      $hostname = base64_decode($_REQUEST['host']);
                  } else {
                      $hostname = $autoRegSysName;
                  }
                  $hostname = trim($hostname);
                  if (!self::getClass('Host')->isHostnameSafe($hostname)) {
      

      Inserting this code

                  } elseif (strtoupper($autoRegSysName) == 'SYSSERIAL') {
                      $hostname = base64_decode($_REQUEST['host']);
      

      The file can be found here.
      /var/www/html/fog/fog/lib/reg-task/registration.class.php

      So now if we turn on autoprop and set sys name to SYSSERIAL would it insert the hostname value we configured in the fog.auto.reg file?

      sysserial.png

      Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

      X 1 Reply Last reply Reply Quote 0
      • X
        Xinzo @george1421
        last edited by Xinzo

        @george1421
        I have the MAC adress of the computer instead of the ‘PC-*’.
        The SYSSERIAL is defined somewhere in the php script ?

        george1421G 1 Reply Last reply Reply Quote 0
        • george1421G
          george1421 Moderator @Xinzo
          last edited by

          @xinzo said in Use serial number as hostname in Fog:

          The SYSSERIAL is defined somewhere in the php script ?

          I made that variable up for the hack to the script.

          In this specific code section I look for the word SYSSERIAL

                      } elseif (strtoupper($autoRegSysName) == 'SYSSERIAL') {
                          $hostname = base64_decode($_REQUEST['host']);
          

          So if the autoRegSysName (the field where you have MAC now or PC*) equals SYSSERIAL then remember in the previous steps you added the value host to the curl call in fog.auto.reg?, It will take the value of host and assign it to the variable $hostname. Its a similar concept to the line above that looks for the word MAC and then assigns the mac address of the target computer to the $hostname variable. In the fog.auto.reg file you adjusted earlier the $host variable is created by the fog.customhost script, right. Its a bit of a complicated path but when all of the bits are in place it should give you the autonaming function as with the full registration process.

          Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

          X 1 Reply Last reply Reply Quote 0
          • X
            Xinzo @george1421
            last edited by

            @george1421
            Okay I understand.
            In my fog.auto.reg the curl is sending to this script :

            ${web}service/auto.register.php 2>/dev/null)
            Maybe there’s something to do with this file ?

            george1421G 1 Reply Last reply Reply Quote 0
            • george1421G
              george1421 Moderator @Xinzo
              last edited by

              @xinzo said in Use serial number as hostname in Fog:

              auto.register.php

              Yes that is the file you will edit on the FOG server itself. It should be in the path I provided previously. Now that I think about it I might want to change the auto prop value to CUSTOM instead of SYSSERIAL and then make a write up on this for those fog admins that want to create a custom auto name value. I always use the full registration on my campus so I never thought about the auto naming process. I think you are onto something that will be useful to other fog admins.

              Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

              X 1 Reply Last reply Reply Quote 0
              • X
                Xinzo @george1421
                last edited by

                @george1421
                I’ve done it !
                The “old” fog.auto.reg is :

                if [[ -f "/bin/fog.customhostname" ]]; then
                    . /bin/fog.customhostname
                fi
                
                if [[ -f /sys/firmware/acpi/tables/MSDM ]]; then
                    productKey=$(tail -c+57 /sys/firmware/acpi/tables/MSDM | base64)
                fi
                while [[ -z $res ]]; do
                    res=$(curl -Lks --data "host=${host_default_name}&sysserial=${sysserial}&sysuuid=${sysuuid}&mac=$mac&productKey=${productKey}" ${web}service/auto.register.php 2>/dev/null)
                

                Here is the trick :

                while [[ -z $res ]]; do
                        host=${host_default_name}
                        host=$(echo $host | base64)
                        res=$(curl -Lks --data "host=$host&sysserial=${sysserial}&sysuuid=${sysuuid}&mac=$mac&productKey=${productKey}" ${web}service/auto.register.php 2>/dev/null)
                

                We have to convert to base64 and then send to the script. It works like a charm.
                I suceeded when I inspected the fog.man.reg.fix Here is what helped me :

                while [[ $res != "#!ok" ]]; do
                    if [[ $host_default_name != "" ]]; then
                        read -p " * Enter hostname for this computer [$host_default_name]: " host
                    else
                        read -p " * Enter hostname for this computer: " host
                    fi
                    host=${host:-$host_default_name}
                    if [[ ${#host} -gt 15 ]]; then
                        host=${host:0:15}
                        echo " | Truncated to 15 characters: $host"
                        usleep 2000000
                    fi
                    host=$(echo $host | base64)
                    res=$(curl -Lks --data "host=$host" ${web}service/hostnameloop.php 2>/dev/null)
                    [[ $res != "#!ok" ]] && echo "$res"
                
                
                done
                

                Those line
                host=${host:-$host_default_name}
                host=$(echo $host | base64)
                res=$(curl -Lks --data "host=$host" ${web}service/hostnameloop.php 2>/dev/null)

                Thank you very much for your help 😁

                george1421G 1 Reply Last reply Reply Quote 1
                • george1421G
                  george1421 Moderator @Xinzo
                  last edited by

                  @xinzo well done! Now just make sure you backup everything since you hacked the fog environment. That way when/if you upgrade you don’t lose your hacks. But really nice. I’m really more than willing to help someone help themselves success with FOG. This way you can get exactly what works for your situation.

                  Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

                  X 1 Reply Last reply Reply Quote 0
                  • X
                    Xinzo @george1421
                    last edited by

                    Thanks 😁
                    For people who want to do this. Don’t forget to set the QUICKREG SYS NAME in the FOG SETTINGS to SYSSERIAL.
                    @george1421 Can I upload my file somewere for the people who want to implement the feature ?

                    george1421G 1 Reply Last reply Reply Quote 0
                    • george1421G
                      george1421 Moderator @Xinzo
                      last edited by george1421

                      @xinzo If you want to post them here, I’ll rewrite the instructions as a tutorial and then provide a link to this thread. You might need to change the extension of the files to .txt so they can be uploaded. I can see other wanting this feature too. I know I personally missed it since the FOG v0.30 days.

                      Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

                      X A 2 Replies Last reply Reply Quote 0
                      • X
                        Xinzo @george1421
                        last edited by

                        @george1421
                        Here are my files, I’ve upload all the content of my postinitscripts folder:
                        fog.postinit.txt
                        fog.patch.customhostname.txt
                        fog.man.reg.fix.txt
                        fog.customhostname.txt
                        fog.auto.reg.txt

                        @george1421 said in Use serial number as hostname in Fog:

                        I can see other wanting this feature too. I know I personally missed it since the FOG v0.30 days.

                        Without you, impossible to implement this feature. Thanks a lot

                        1 Reply Last reply Reply Quote 1
                        • A
                          AlexisPHC @george1421
                          last edited by

                          @george1421 did you ever get round to writing a guide for this? It’s a shame this can’t be included in the main branch for quick registration, because we just name machines off the system serial number here and you have to pay extra now for a bloomin barcode with Dell!

                          Tom ElliottT george1421G 2 Replies Last reply Reply Quote 0
                          • Tom ElliottT
                            Tom Elliott @AlexisPHC
                            last edited by

                            @AlexisPHC You can set this by putting the name field of quick registration as {SYSSERIAL}

                            Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

                            Web GUI issue? Please check apache error (debian/ubuntu: /var/log/apache2/error.log, centos/fedora/rhel: /var/log/httpd/error_log) and php-fpm log (/var/log/php*-fpm.log)

                            Please support FOG if you like it: https://wiki.fogproject.org/wiki/index.php/Support_FOG

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              AlexisPHC @Tom Elliott
                              last edited by

                              @Tom-Elliott said in Use serial number as hostname in Fog:

                              {SYSSERIAL}

                              Ah, lovely, thanks Tom, I’ll give that a go - I tried SYSSERIAL on it’s own and it didn’t work but didn’t realise it needed the curly brackets!

                              1 Reply Last reply Reply Quote 0
                              • george1421G
                                george1421 Moderator @AlexisPHC
                                last edited by

                                @AlexisPHC said in Use serial number as hostname in Fog:

                                did you ever get round to writing a guide for this?

                                Yes. I think the previous comment to your post referenced the files.

                                https://forums.fogproject.org/topic/14278/creating-custom-hostname-default-for-fog-man-reg?_=1762381023512

                                the file fog.customhostname uses a linux command dmidecode to extract the serial number from the smbios. And the rest of the ‘hack’ will pump that name into the full registration files. When I wrote that script I worked for a company that had a composite host name with the site code, a hardware type and then the dell asset tag appended onto the end. That is what this tutorial shows.

                                Now Tom mentioned that {SYSSERIAL} in the quick registration field works too. I wasn’t aware of that feature, it must be new. I know FOG version 0.30 had that feature but it was removed when FOG 1.x was released. If its back, that’s great!! that makes my script(s) unnecessary.

                                Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!

                                1 Reply Last reply Reply Quote 0
                                • 1
                                • 2
                                • 1 / 2
                                • First post
                                  Last post

                                203

                                Online

                                12.4k

                                Users

                                17.4k

                                Topics

                                155.9k

                                Posts
                                Copyright © 2012-2025 FOG Project