Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / tasks / 50ChangePassword.in @ aa4fc6bb

History | View | Annotate | Download (1.9 kB)

1 0a35a4ab Nikos Skalkotos
#! /bin/bash
2 54080484 Nikos Skalkotos
3 54080484 Nikos Skalkotos
### BEGIN TASK INFO
4 54080484 Nikos Skalkotos
# Provides:		ChangePassword
5 c349d1b3 Nikos Skalkotos
# RunBefore:            UmountImage
6 c349d1b3 Nikos Skalkotos
# RunAfter:		InstallUnattend
7 54080484 Nikos Skalkotos
# Short-Description:	Changes Password for specified users
8 54080484 Nikos Skalkotos
### END TAST INFO
9 54080484 Nikos Skalkotos
10 54080484 Nikos Skalkotos
set -e
11 c4447efb Nikos Skalkotos
. @commondir@/common.sh
12 54080484 Nikos Skalkotos
13 54080484 Nikos Skalkotos
windows_password() {
14 54080484 Nikos Skalkotos
    local target=$1
15 54080484 Nikos Skalkotos
    local password=$2
16 54080484 Nikos Skalkotos
17 54080484 Nikos Skalkotos
    local tmp_unattend=`mktemp` || exit 1
18 54080484 Nikos Skalkotos
    CLEANUP+=("rm $tmp_unattend")
19 54080484 Nikos Skalkotos
20 54080484 Nikos Skalkotos
    echo -n "Installing new admin password..."
21 54080484 Nikos Skalkotos
22 54080484 Nikos Skalkotos
    local namespace="urn:schemas-microsoft-com:unattend"
23 54080484 Nikos Skalkotos
    
24 54080484 Nikos Skalkotos
    $XMLSTARLET ed -N x=$namespace -u "/x:unattend/x:settings/x:component/x:UserAccounts/x:AdministratorPassword/x:Value" -v $password "$target/Unattend.xml" > $tmp_unattend
25 54080484 Nikos Skalkotos
26 54080484 Nikos Skalkotos
    cat $tmp_unattend > "$target/Unattend.xml"
27 54080484 Nikos Skalkotos
    echo done
28 54080484 Nikos Skalkotos
}
29 54080484 Nikos Skalkotos
30 54080484 Nikos Skalkotos
linux_password() {
31 54080484 Nikos Skalkotos
    local target=$1
32 54080484 Nikos Skalkotos
    local password=$2
33 54080484 Nikos Skalkotos
34 c4447efb Nikos Skalkotos
    local hash=$(@commondir@/snf-passtohash.py $password)
35 54080484 Nikos Skalkotos
    if [ ! -e ${target}/etc/shadow ]; then
36 54080484 Nikos Skalkotos
       log_error "No /etc/shadow found!" 
37 54080484 Nikos Skalkotos
    fi
38 54080484 Nikos Skalkotos
    
39 54080484 Nikos Skalkotos
    declare -a users=("root")
40 54080484 Nikos Skalkotos
41 54080484 Nikos Skalkotos
    local distro=$(get_distro $target)
42 54080484 Nikos Skalkotos
43 54080484 Nikos Skalkotos
    if [ "x$disto" = "xubuntu" -o \
44 630610f8 Nikos Skalkotos
         "x$disto" = "xfedora" ] ; then
45 54080484 Nikos Skalkotos
        users+=("user")
46 54080484 Nikos Skalkotos
    fi
47 54080484 Nikos Skalkotos
48 54080484 Nikos Skalkotos
    for i in $(seq 0 1 $((${#users[@]}-1))); do
49 54080484 Nikos Skalkotos
        local tmp_shadow=$(mktemp)
50 54080484 Nikos Skalkotos
        CLEANUP+=("rm $tmp_shadow")
51 54080484 Nikos Skalkotos
52 54080484 Nikos Skalkotos
        echo -n "Setting ${users[$i]} password..."
53 54080484 Nikos Skalkotos
    
54 54080484 Nikos Skalkotos
        echo "${users[$i]}:$hash:15103:0:99999:7:::" > $tmp_shadow
55 54080484 Nikos Skalkotos
        grep -v "${users[$i]}" ${TARGET}/etc/shadow >> $tmp_shadow
56 54080484 Nikos Skalkotos
        cat $tmp_shadow > ${target}/etc/shadow
57 54080484 Nikos Skalkotos
        echo "done"
58 54080484 Nikos Skalkotos
    done
59 54080484 Nikos Skalkotos
}
60 54080484 Nikos Skalkotos
61 8704ee47 Nikos Skalkotos
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
62 8704ee47 Nikos Skalkotos
    log_error "Target dir: \`$SNF_IMAGE_TARGET' is missing"
63 54080484 Nikos Skalkotos
fi
64 54080484 Nikos Skalkotos
65 54080484 Nikos Skalkotos
if [ -z "$SNF_IMAGE_PASSWORD" ]; then
66 54080484 Nikos Skalkotos
    log_error "Password is missing"
67 54080484 Nikos Skalkotos
fi
68 54080484 Nikos Skalkotos
69 54080484 Nikos Skalkotos
if [ "$SNF_IMAGE_TYPE" = "ntfsdump" ]; then
70 54080484 Nikos Skalkotos
    windows_password $SNF_IMAGE_TARGET $SNF_IMAGE_PASSWORD
71 54080484 Nikos Skalkotos
elif [ "$SNF_IMAGE_TYPE" = "extdump" ]; then
72 54080484 Nikos Skalkotos
    linux_password $SNF_IMAGE_TARGET $SNF_IMAGE_PASSWORD
73 54080484 Nikos Skalkotos
fi
74 54080484 Nikos Skalkotos
75 54080484 Nikos Skalkotos
echo "done"
76 54080484 Nikos Skalkotos
77 54080484 Nikos Skalkotos
cleanup
78 54080484 Nikos Skalkotos
trap - EXIT
79 54080484 Nikos Skalkotos
80 54080484 Nikos Skalkotos
exit 0
81 54080484 Nikos Skalkotos
82 54080484 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :