Trigger a script directly after partclone that requests input and copies a folder
-
@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.
-
Hi Tom, No this script here is actually just a testing tool to see the possibilities I can create with postdownload script. I’ve noticed the Early Hostname changer in Fog Trunk which is a great option if it works like I am expecting it to work.
Right now I’m building my current environment into Fog, without loss of functionality from the old environment (Windows+Ghost+a self-written .net app), there I have the option to check the hostname before it is submitted; that is why I needed this option.
I’ll definitely delve into the Early hostname changer soon
Also, we do the deployment for several customers, some want us to change the name, some dont. Some want us to use a specific format, others want other formats. If it was for internal use; then the auto population could be an option; but all we do is custom tailored; even our fog installation
– the reason that I do not use the Fog Boot menu is because we do not know the MAC adressess beforehand; we do however know the Serialnumber (and so does iPXE: DmiDecode), iPxe also know the MACadress; so we use a script in iPxe to tell fog that the right device has booted and is online.
I’m still busy developing all the databases behind that, because we will not be able to completely use the FOG mainframe, but will definitely use the backplane -
I’ve noticed the Early Hostname changer in Fog Trunk which is a great option if it works like I am expecting it to work.
and how are you expecting it to work?
– the reason that I do not use the Fog Boot menu is because we do not know the MAC adressess beforehand;
i’m not understanding what one has to do with the other
-
@Junkhacker
The two have nothing to do with each other in this context.=
I am expecting the early hostname changer to work with the field hostname from the Fog Dbase, am I correct here?Right now we are using the field Hostname from the table Hosts to identify the machine (we prefill it with the serialnumber), if I am correct in my expectation above, then we have to change that functionality to use a field not used by the hostname changer.
Other question: is it possible to turn it on- or off, per device?
-
@abos_systemax said in Trigger a script directly after partclone that requests input and copies a folder:
Right now we are using the field Hostname from the table Hosts to identify the machine (we prefill it with the serialnumber), if I am correct in my expectation above, then we have to change that functionality to use a field not used by the hostname changer.
i don’t understand what you’re trying to do here. are you trying to give the computer a name that matches it’s serial number?
Other question: is it possible to turn it on- or off, per device?
no
-
@Junkhacker
Currently, we are using the Hostname field in the table Hosts to identify the machine in iPXE as ‘prestaged’ for Fog.
If the hostname changer does use this specific field to insert the name (and correct me If I am wrong here), then we will have to change our own script that currently also uses this field, because the actual hostname will be different (based on customer preferences)If the above is true , then I will need to find alternative means to prestage devices. If the Easy Hostname Change option uses a different database or table, then please let me know.
p.s. We do not use the windows client, I am talking about the ‘Fog OS Easy hostname change’ option
-
@abos_systemax the early hostname changer uses the host name, as listed in the host profile. why not just name it in fog what you want the name of the computer to be?
the early hostname changer does not use the client, it mounts the drive of the just imaged computer and edits the registry