Anaconda/KsExample

= An example for customized user interaction in the %post section: =

In order to allow user interaction in the %post section a switch of the virtual terminal has to occur. This is done with the following lines right after the *%post%* line and before any other script starts.

_exec < /dev/tty3 > /dev/tty3_ _chvt 3_

Once the script is finished the virtual terminal needs to be switched back to where the original Anaconda process runs. This is accomplished by adding a _chvt 3_ line to the end of the *%post%* section.

The following is an example of a *%post%* script that will first ask to enter a new root password, then it will ask to verify the new root password. If the two entries match it asks to enter a user name, then a "real user name" and finally the script asks for a user password and a verification entry. If the two passwords match the script is finished and is returned to the Anaconda process where the installaion process continues.

--- --- %post exec < /dev/tty3 > /dev/tty3 chvt 3
 * Example %post section*

PASSWORD="&*UY^&^YI" PASSWORD_CHECK=1

until [ "$PASSWORD" = "$PASSWORD_CHECK" ] do if [ $PASSWORD = "&*UY^&^YI" ] ; then

dialog --title "Enter root (Administrator) Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Enter a root (Administrator) password between 6 and 8 characters" 8 60 2>/tmp/passwd.$$

SEL=$?

NA5= case $SEL in 0) PASSWORD=$NA5;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

else

dialog --title "Passwords do not match" --backtitle "MyDistro (C) 2003 MyDistro" --msgbox "The passwords you entered do not match. Please re-enter passwords" 6 50

dialog --title "Enter root (Administrator) Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Enter a root (Administrator) password between 6 and 8 characters" 8 60 2>/tmp/passwd.$$

SEL=$?

NA5= case $SEL in 0) PASSWORD=$NA5;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

fi

dialog --title "Re-enter root (Administrator) Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Please re-enter the root (Administrator) password" 8 60 2>/tmp/passwd.$$

SEL=$?

NA4= case $SEL in 0) PASSWORD_CHECK=$NA4;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

done

echo $NA4 | passwd --stdin root >/dev/null 2>&1

dialog --title "Add Username" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --inputbox "Enter an easy to remember Username please" 8 60 2>/tmp/usrname.$$

SEL=$?

NA= case $SEL in 0) useradd $NA >/dev/null 2>&1 ;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/usrname.$$

dialog --title "Enter Name" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --inputbox "Please enter your real name(first and last)" 8 60 2>/tmp/name.$$

SEL=$?

NA2= case $SEL in 0) chfn -f "$NA2" $NA >/dev/null 2>&1 ;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/name.$$

PASSWORD="&*UY^&^YY" PASSWORD_CHECK=1 until [ "$PASSWORD" = "$PASSWORD_CHECK" ] do if [ $PASSWORD = "&*UY^&^YY" ] ; then

dialog --title "Enter Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Enter a password between 6 and 8 characters" 8 60 2>/tmp/passwd.$$

SEL=$?

NA1= case $SEL in 0) PASSWORD=$NA1;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

else

dialog --title "Password's do not match" --backtitle "MyDistro (C) 2003 MyDistro" --msgbox "The passwords you entered do not match. Please re-enter passwords" 6 50

dialog --title "Enter Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Enter a password between 6 and 8 characters" 8 60 2>/tmp/passwd.$$

SEL=$?

NA1= case $SEL in 0) PASSWORD=$NA1;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

fi

dialog --title "Re-enter Password" --backtitle "MyDistro (C) 2003 MyDistro" --no-cancel --passwordbox "Please re-enter your password" 8 60 2>/tmp/passwd.$$

SEL=$?

NA3= case $SEL in 0) PASSWORD_CHECK=$NA3;; 1) echo "Cancel is Pressed" ;; 255) echo "[ESCAPE] key pressed" ;; esac

rm -f /tmp/passwd.$$

done

echo $NA3 | passwd --stdin $NA >/dev/null 2>&1

dialog --title "Thank you" --backtitle "MyDistro (C) 2003 MyDistro" --msgbox "Thank you for choosing and installing MyDistro. Please press  to reboot system and start MyDistro. Please remove any floppy disks and/or CD-ROMS from their respective drives." 9 50

chvt 3