#!/bin/bash
# phpmoves.sh - Generate a list of the cPanel users and their current PHP versions
# Copyright 2023 World Host Group.
# Tsvetan Gerov <tsvetan@worldhost.group>
# Version 0.2
if [ ! -x /usr/bin/selectorctl ]; then
echo "Error: This server is not using CloudLinux's PHP selector"
exit 1
fi
case $1 in
generate)
nativeVersion=$(selectorctl --show-native-version)
serverHostname=$(hostname -f)
CPUSERS=$(whmapi1 listaccts | grep user | awk '{print$2}')
OUTPUT=${serverHostname}.txt
truncate -s 0 $OUTPUT
for CPUSER in $CPUSERS; do
if getent passwd $CPUSER > /dev/null 2>&1; then
PHPVER=$(selectorctl --user-current --user=${CPUSER} | awk '{print$1}')
if [ $PHPVER == "native" ]; then
PHPVER=$nativeVersion
fi
echo "$CPUSER : $PHPVER" | tee -a $OUTPUT
fi
done
echo "Transfer $OUTPUT file to the new server and execute ./$(basename $0) load $OUTPUT"
;;
load)
FILE=$2
echo "Loading $FILE..."
CPUSERS=$(cat $FILE | awk '{print$1}')
for CPUSER in $CPUSERS; do
if getent passwd $CPUSER > /dev/null 2>&1; then
PHPVER=$(grep -w ^${CPUSER} $FILE | awk '{print$3}')
echo "=> $CPUSER: Settings PHP version to $PHPVER"
selectorctl --set-user-current=$PHPVER --user=$CPUSER
else
echo "--> User $CPUSER does not exists on this server."
fi
done
;;
*)
echo "Usage: $(basename $0) generate|load"
echo "generate - generate a list with users and their curent php versions"
echo "load <filename> - set a users php versions from a generated list"
;;
esac