Trigger a script directly after partclone that requests input and copies a folder
-
As far as I am aware, a snapin requires a FOG Service to run on the Windows client.
Since this is customer hardware and FOG is only used to deploy an image; is it possible to run a script after the partclone part that requests user input and writes a file directly to disk? -
It’s called postdownloadscripts. Specifically this is designed to do almost EXACTLY what you want.
-
I’ve seen it mentioned earlier… Is there any documentation on this subject?
-
@abos_systemax minimal at best, but i’m certain what you’ve read about it is enough to at least get you started.
-
@Tom-Elliott can you point out what minimal stuff there is? I’d like to learn about it and improve documentation.
-
-
@Tom-Elliott Is there a list of what variables available to be used in the scripts? I noticed that $osid and ${postdownloadpath} were used in those scripts. Are there any others that are globally available to a post download script?
-
@ITSolutions look at Junkhacker’s post here https://forums.fogproject.org/topic/6463/expose-fog-host-and-image-properties-to-post-install-scripts/7
I’ve had it on my back burner to write a php page that I could call in the post download script to pickup more deploy time info that is currently listed above. There never seems to be enough time to work on it though.
@abos_systemax what type of input do you need from the user? I have a pretty extensive postinstall script. I haven’t tried it in a while but I was able to pause the postinstall script to wait for an IT tech’s input and then write a file based on the user’s input.
-
@abos_systemax I did have a sample script from my dev box (the one and only I didn’t purge about a week ago).
Here is the basics of the code.
Create a file in/images/postdownloadscripts
called fog.question (you can really name it what ever you like). Then paste the content of the follow script into that file.#!/bin/bash . /usr/share/fog/lib/funcs.sh; read -p "Enter your room number " rn echo "You answered ${rn}. ";
Now edit
/images/postdownloadscripts/fog.postdownload
And append this line
. ${postdownpath}fog.question
Now deploy your image. After the image is deployed the installer should stop and ask you for the room number and then continue.
-
@ITSolutions said:
Is there a list of what variables available to be used in the scripts? I noticed that $osid and ${postdownloadpath} were used in those scripts. Are there any others that are globally available to a post download script?
I am sure there are more. AFAIK we don’t maintain a list of those. Just put a test script in place that dumps the environment (
env
andset
) to a text file and examine it afterwards… -
@george1421
Thank you! This is exactly (well, almost exactly) what I needed.
The rest is just a normal Bash script I presume -
@abos_systemax If you explain (in more detail) what you are trying to do (other than ask a question to the installer) I might be able to provide a better quality answer.
But you are correct since the post install scripts are run on the FOS (linux) client it executes as a bash script.
-
@george1421 At my company we deploy for multiple customers; I want to echo a script to the drive of the just deployed machine that contains the computername that we have decided for the machine. Since we are unable to use the FOG Client on Windows (not our devices, nor our images), I have to find other ways.
Your script seems to work, with one problem: I cannot type anything. The same problem occurs when I run a Debug Deployment; the FOS doesn’t seem to recognize my keyboard on a Fujitsu E546.
-
@abos_systemax As for the keyboard issue, I can not help you with that other than can you use an external keyboard?
For the system renaming. I don’t use the fog client for that either. In my case we use an unattend.xml file as part of the sysprep process. We update the unattend.xml file in the fog post install scripts with the computer name and other relevant install time settings.
I use the following command in my post install script. The variable $compname is calculated based on the target computer asset tag and install location. In your case the $compname variable would be set based on the question/answer you provided. Depending on where you place the unattend.xml file you need to provide the full path and filename of the unattend.xml file (Reminder: pay attention to the case of the file and path)
sed -i -e "s#<ComputerName>\([^<][^<]*\)</ComputerName>#<ComputerName>$compname</ComputerName>#gi" $PathToUnattendFile
-
@abos_systemax said in Trigger a script directly after partclone that requests input and copies a folder:
@george1421 At my company we deploy for multiple customers; I want to echo a script to the drive of the just deployed machine that contains the computername that we have decided for the machine. Since we are unable to use the FOG Client on Windows (not our devices, nor our images), I have to find other ways.
Your script seems to work, with one problem: I cannot type anything. The same problem occurs when I run a Debug Deployment; the FOS doesn’t seem to recognize my keyboard on a Fujitsu E546.
it does work with an external keyboard…
is that a driver related issue? -
it does work with an external keyboard…
is that a driver related issue?almost certainly, yes.
personally, i’d just use an external keyboard instead of troubleshooting further… -
@Junkhacker said
almost certainly, yes.
personally, i’d just use an external keyboard instead of troubleshooting further…I agree, you only need the external keyboard for deployment. Once the windows kernel boots then the onboard keyboard should work.
You have to remember that the FOG system (FOS client specifically) is linux based. So its may not be possible to have every flavor of driver possible. I suspect that the keyboard is connected behind some kind of onboard controller that linux doesn’t support.
To restate what @Junkhacker just posted, go ahead and use an external keyboard for deployment, then move on to the next issue.
-
@george1421 said in Trigger a script directly after partclone that requests input and copies a folder:
@Junkhacker said
almost certainly, yes.
personally, i’d just use an external keyboard instead of troubleshooting further…I agree, you only need the external keyboard for deployment. Once the windows kernel boots then the onboard keyboard should work.
You have to remember that the FOG system (FOS client specifically) is linux based. So its may not be possible to have every flavor of driver possible. I suspect that the keyboard is connected behind some kind of onboard controller that linux doesn’t support.
To restate what @Junkhacker just posted, go ahead and use an external keyboard for deployment, then move on to the next issue.
Yes. The only problem is that I will have 1000ths of laptops that have to be deployed. But that is my problem; I get that the problem is a driver related issue; I think I’ll have to use variables and good’ol mySQL to automate the process instead of typing a computername.
I thank you all for replying; I now know how to actually trigger a script; All I need to figure out now is the automation part.
-Alex
-
@abos_systemax If you have that many systems I would take a slightly different approach but still within the framework of FOG.
If you have 1000 systems and have them cataloged (system name and mac address), you can import those systems into fog as hosts. This catalog can come from any tool that can create a .csv file. So you could use excel to create a table of your systems (computer name vs mac address). Upload them into FOG and then create a post install script that takes fog post install variable $hostname and insert that into the sed script (instead of $compname)I posted before. This way no mysql queries are needed, everything is in FOG and you are using the resources provided by FOG for imaging. You still are not using the fog client for anything. You are just updating the unattend.xml with the value (indirectly) from your csv upload.
The other option is to just let fog create an auto number of the systems are they are registered, like nc0001 for the first system, nc0002 for the second and so on.
-
@abos_systemax is the only reason you want to trigger a script so you can have the user define the hostname? There is already a way to automate setting up a hostname for the system within fog. Assuming you do register the systems you could use auto population to at least help with the naming part by itself.