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

Postscript Not Running, How to Test?

Scheduled Pinned Locked Moved Solved
FOG Problems
2
6
1.5k
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.
  • U
    UWPVIOLATOR
    last edited by Jul 20, 2017, 2:20 PM

    Server
    • FOG Version: 1.4.4
    • OS: Ubuntu 16.04
    Client
    • Service Version:
    • OS:
    Description

    Setting up Postdownload scripts to put drivers on universal image. Worked with @george1421 but got stuck when the script would not run. I was not able to update FOG as we were in a huge deployment that is over with and I want to take a wack at this again.

    How do I test to see the Postscript run? Here are the scripts

    0_1500560078388_d5e6f383-0b3d-4a86-b862-b9f3b78c8b41-image.png

    fog.postdownload

    #!/bin/sh
    ## This file serves as a starting point to call your custom postimaging scripts.
    ## <SCRIPTNAME> should be changed to the script you're planning to use.
    ## Syntax of post download scripts are
    #. ${postdownpath}<SCRIPTNAME>
    
    echo "starting postdownload"; 
    
    . /usr/share/fog/lib/funcs.sh
    [[ -z $postdownpath ]] && postdownpath="/images/postdownloadscripts/"
    case $osid in
        5|6|7|9)
            clear
            [[ ! -d /ntfs ]] && mkdir -p /ntfs
            getHardDisk
            if [[ -z $hd ]]; then
                handleError "Could not find hdd to use"
            fi
            getPartitions $hd
            for part in $parts; do
                umount /ntfs >/dev/null 2>&1
                fsTypeSetting "$part"
                echo  "$part"
                case $fstype in
                    ntfs)
                        dots "Testing partition $part"
                        ntfs-3g -o force,rw $part /ntfs
                        ntfsstatus="$?"
                        if [[ ! $ntfsstatus -eq 0 ]]; then
                            echo "Skipped"
                            continue
                        fi
                        if [[ ! -d /ntfs/windows && ! -d /ntfs/Windows && ! -d /ntfs/WINDOWS ]]; then
                            echo "Not found"
                            umount /ntfs >/dev/null 2>&1
                            continue
                        fi
                        echo "Success"
                        break
                        ;;
                    *)
                        echo " * Partition $part not NTFS filesystem"
                        ;;
                esac
            done
            if [[ ! $ntfsstatus -eq 0 ]]; then
                echo "Failed"
                debugPause
                handleError "Failed to mount $part ($0)\n    Args: $*"
            fi
            echo "Done"
            debugPause
            # . ${postdownpath}fog.log
            . ${postdownpath}fog.drivers
            # . ${postdownpath}fog.ad
            umount /ntfs
            ;;
        *)
            echo "Non-Windows Deployment"
            debugPause
            return
            ;;
    esac
    

    fog.drivers

    #!/bin/bash
    ceol=`tput el`;
    manu=`dmidecode -s system-manufacturer`;
    case $manu in
        [Ll][Ee][Nn][Oo][Vv][Oo])
            machine=$(dmidecode -s system-version)
            ;;
        *[Dd][Ee][Ll][Ll]*)
            machine=$(dmidecode -s system-product-name) #pruduct is typo, just realized sorry :(
            ;;
        *)
            machine=$(dmidecode -s system-product-name) # Technically, we can remove the dell one as it's the "default"
            ;;
    esac
    [[ -z $machine ]] && return #assuming you want it to break if it is not lenovo or dell?
    machine="${machine%"${machine##*[![:space:]]}"}" #Removes Trailing Spaces
    
    #############################################
    # Quick hack to find out if the installed OS image is a x86 or x64
    system64="/ntfs/Windows/SysWOW64/regedit.exe" # sloppy detect if 64bit or not
    [[ ! -f $system64 ]] && arch="x86" || arch="x64"
    
    #############################################
    #this section has been updated to bring the osn names in line
    # with how the Dell CABs are defined
    case $osid in
        5) osn="win7" ;;
        6) osn="win8" ;;
        7) osn="win8.1" ;;
        9) osn="win10" ;;
    esac
    
    #############################################
    dots "Preparing Drivers"
    # below creates local folder on imaged pc
    # this can be anywhere you want just remember
    # to make sure it matches throughout! (case IS important here)
    clientdriverpath="/ntfs/Windows/DRV"
    remotedriverpath="/images/drivers/$machine/$osn/$arch"
    
    [[ ! -d $clientdriverpath ]] && mkdir -p "$clientdriverpath" >/dev/null 2>&1
    echo -n "In Progress"
    
    #there's 3 ways you could handle this,
    #driver cab file, extracted driver files or both
    #so on the server put extracted driver files to match below folder tree
    #i.e. Model Latitude E5410, Windows 7 x86 image would be:
    #/fog/Drivers/Latitude E5410/win7/x86
    
    echo "System breakpoint";
    debugPause;
    
    rsync -aqz "$remotedriverpath" "$clientdriverpath" >/dev/null 2>&1
    [[ ! $? -eq 0 ]] && handleError "Failed to download driver information for [$machine/$osn/$arch]"
    
    echo "End driver copy";
    debugPause;
    
    #this next bit adds driver location on pc to devicepath in registry (so sysprep uses it to reference)
    # remember to make devicepath= match the path you've used locally
    #also do not remove %SystemRoot%\inf
    #and to add more locations just use ; in between each location
    
    regfile="/ntfs/Windows/System32/config/SOFTWARE"
    key="\Microsoft\Windows\CurrentVersion\DevicePath"
    devpath="%SystemRoot%\DRV;%SystemRoot%\inf;";
    reged -e "$regfile" &>/dev/null <<EOFREG
    ed $key
    $devpath
    q
    y
    EOFREG
    echo -e "\b\b\b\b\b\b\b\b\b\b\b${ceol}Done"; # this just removes "In Progress and replaces it with done :-)"
    
    
    
    1 Reply Last reply Reply Quote 0
    • G
      george1421 Moderator
      last edited by Jul 20, 2017, 6:28 PM

      you could add breakpoints into the scripts so you can step through them. The script will only pause when you are in debug mode. Something like this:

      #!/bin/sh
      ## This file serves as a starting point to call your custom postimaging scripts.
      ## <SCRIPTNAME> should be changed to the script you're planning to use.
      ## Syntax of post download scripts are
      #. ${postdownpath}<SCRIPTNAME>
      
      echo "starting postdownload"; 
      
      . /usr/share/fog/lib/funcs.sh
      [[ -z $postdownpath ]] && postdownpath="/images/postdownloadscripts/"
      case $osid in
          5|6|7|9)
              clear
              [[ ! -d /ntfs ]] && mkdir -p /ntfs
              getHardDisk
              if [[ -z $hd ]]; then
                  handleError "Could not find hdd to use"
              fi
              getPartitions $hd
              for part in $parts; do
                  umount /ntfs >/dev/null 2>&1
                  fsTypeSetting "$part"
                  echo  "$part"
                  case $fstype in
                      ntfs)
                          dots "Testing partition $part"
                          ntfs-3g -o force,rw $part /ntfs
                          ntfsstatus="$?"
                          if [[ ! $ntfsstatus -eq 0 ]]; then
                              echo "Skipped"
                              continue
                          fi
                          if [[ ! -d /ntfs/windows && ! -d /ntfs/Windows && ! -d /ntfs/WINDOWS ]]; then
                              echo "Not found"
                              umount /ntfs >/dev/null 2>&1
                              continue
                          fi
                          echo "Success"
                          break
                          ;;
                      *)
                          echo " * Partition $part not NTFS filesystem"
                          ;;
                  esac
              done
              if [[ ! $ntfsstatus -eq 0 ]]; then
                  echo "Failed"
                  debugPause
                  handleError "Failed to mount $part ($0)\n    Args: $*"
              fi
              echo "Done, fixing to load the drivers"
              debugPause
              # . ${postdownpath}fog.log
              . ${postdownpath}fog.drivers
              # . ${postdownpath}fog.ad
              umount /ntfs
              ;;
          *)
              echo "Non-Windows Deployment"
              debugPause
              return
              ;;
      esac
      

      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
      • G
        george1421 Moderator
        last edited by Jul 20, 2017, 6:30 PM

        #!/bin/bash
        ceol=`tput el`;
        manu=`dmidecode -s system-manufacturer`;
        case $manu in
            [Ll][Ee][Nn][Oo][Vv][Oo])
                machine=$(dmidecode -s system-version)
                ;;
            *[Dd][Ee][Ll][Ll]*)
                machine=$(dmidecode -s system-product-name) #pruduct is typo, just realized sorry :(
                ;;
            *)
                machine=$(dmidecode -s system-product-name) # Technically, we can remove the dell one as it's the "default"
                ;;
        esac
        [[ -z $machine ]] && return #assuming you want it to break if it is not lenovo or dell?
        machine="${machine%"${machine##*[![:space:]]}"}" #Removes Trailing Spaces
        
        echo "Debug found ${machine}";
        
        #############################################
        # Quick hack to find out if the installed OS image is a x86 or x64
        system64="/ntfs/Windows/SysWOW64/regedit.exe" # sloppy detect if 64bit or not
        [[ ! -f $system64 ]] && arch="x86" || arch="x64"
        
        echo "${arch} was detected";
        #############################################
        #this section has been updated to bring the osn names in line
        # with how the Dell CABs are defined
        case $osid in
            5) osn="win7" ;;
            6) osn="win8" ;;
            7) osn="win8.1" ;;
            9) osn="win10" ;;
        esac
        
        #############################################
        dots "Preparing Drivers"
        # below creates local folder on imaged pc
        # this can be anywhere you want just remember
        # to make sure it matches throughout! (case IS important here)
        clientdriverpath="/ntfs/Windows/DRV"
        remotedriverpath="/images/drivers/$machine/$osn/$arch"
        
        echo "setting client path";
        [[ ! -d $clientdriverpath ]] && mkdir -p "$clientdriverpath" >/dev/null 2>&1
        echo -n "In Progress"
        
        #there's 3 ways you could handle this,
        #driver cab file, extracted driver files or both
        #so on the server put extracted driver files to match below folder tree
        #i.e. Model Latitude E5410, Windows 7 x86 image would be:
        #/fog/Drivers/Latitude E5410/win7/x86
        
        echo "System breakpoint";
        debugPause;
        
        rsync -aqz "$remotedriverpath" "$clientdriverpath" >/dev/null 2>&1
        [[ ! $? -eq 0 ]] && handleError "Failed to download driver information for [$machine/$osn/$arch]"
        
        echo "End driver copy";
        debugPause;
        
        #this next bit adds driver location on pc to devicepath in registry (so sysprep uses it to reference)
        # remember to make devicepath= match the path you've used locally
        #also do not remove %SystemRoot%\inf
        #and to add more locations just use ; in between each location
        
        regfile="/ntfs/Windows/System32/config/SOFTWARE"
        key="\Microsoft\Windows\CurrentVersion\DevicePath"
        devpath="%SystemRoot%\DRV;%SystemRoot%\inf;";
        reged -e "$regfile" &>/dev/null <<EOFREG
        ed $key
        $devpath
        q
        y
        EOFREG
        echo -e "\b\b\b\b\b\b\b\b\b\b\b${ceol}Done"; # this just removes "In Progress and replaces it with done :-)"
        

        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
        • U
          UWPVIOLATOR
          last edited by UWPVIOLATOR Jul 20, 2017, 1:35 PM Jul 20, 2017, 7:34 PM

          @george1421 This now works. I will now work on putting drivers in the folders and testing it out. SO EXCITED to start working on a Golden image.

          G 1 Reply Last reply Jul 20, 2017, 7:37 PM Reply Quote 0
          • G
            george1421 Moderator @UWPVIOLATOR
            last edited by Jul 20, 2017, 7:37 PM

            @UWPVIOLATOR So now it magically works and it didn’t before? What changed?? If nothing then I don’t believe it. The only thing I added was comments to know where it was in the script.

            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!

            U 1 Reply Last reply Jul 20, 2017, 7:39 PM Reply Quote 0
            • U
              UWPVIOLATOR @george1421
              last edited by Jul 20, 2017, 7:39 PM

              @george1421 I copied what your pasted and changed the permissions. Maybe it was the permissions to fog:root that did it?

              1 Reply Last reply Reply Quote 0
              • 1 / 1
              1 / 1
              • First post
                4/6
                Last post

              154

              Online

              12.0k

              Users

              17.3k

              Topics

              155.2k

              Posts
              Copyright © 2012-2024 FOG Project