84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
export logfile="/var/log/sysupdate.log"
 | 
						|
export tmpfile=/tmp/shadowarch-cowerfile
 | 
						|
unset apply
 | 
						|
 | 
						|
while getopts "al:h" OPTION
 | 
						|
do 
 | 
						|
    case $OPTION in
 | 
						|
        a) export apply="true"; ;;
 | 
						|
        c) export logfile=${OPTARG}; ;;
 | 
						|
        *) printf "ShadowArch Update Checker\n-a Apply changes\n-l Logfile\n-h Show this helptext\n"; exit 1;;
 | 
						|
    esac;
 | 
						|
done
 | 
						|
 | 
						|
date > $logfile
 | 
						|
 | 
						|
# Update
 | 
						|
echo == Updating Arch Packages == | tee -a $logfile
 | 
						|
if [ ! -z "$apply" ]; then
 | 
						|
    pacman -Syu 2>&1 | tee -a $logfile # I've been having troubles with this causing crashes while online.
 | 
						|
    # Hook for MediaWiki
 | 
						|
    if [ `grep $(date +$F) /var/log/pacman.log | grep -c mediawiki` -eq 1 ]; then
 | 
						|
        php /usr/share/webapps/mediawiki/maintenance/update.php | tee -a $logfile
 | 
						|
    fi
 | 
						|
    # Hook for Grimoire
 | 
						|
    if [ `grep $(date +$F) /var/log/pacman.log | grep -c 'upgraded postgresql '` -eq 1 ]; then
 | 
						|
        echo "Updating PostGreSQL databases" | tee -a $logfile
 | 
						|
        #Clear old backups.
 | 
						|
        rm -Rf /var/lib/postgres/olddata
 | 
						|
        #Stop the service and save old database version.
 | 
						|
        if [ -f /usr/lib/systemd/system/grimoire.service ]; then systemctl stop grimoire; else systemctl stop postgresql.service; fi
 | 
						|
        su -l postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/olddata'
 | 
						|
        # Init new database and upgrade.
 | 
						|
        su -l postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data' | tee -a $logfile
 | 
						|
        upstr=`grep "$(date +%F)" /var/log/pacman.log | grep 'upgraded postgresql '`
 | 
						|
        oldver=`echo $upstr | rev | cut -f 2 -d '>' | cut -f 1 -d '(' | rev | sed s/\ -//`
 | 
						|
        newver=`echo $upstr | rev | cut -f 1 -d '>' | cut -f 2 -d ')' | rev`
 | 
						|
        # Upgrade the database.
 | 
						|
        su -l postgres -c "pg_upgrade -d /var/lib/postgres/olddata/ -D /var/lib/postgres/data/ -b /opt/pgsql-$oldver/bin/ -B /usr/bin/" | tee -a $logfile
 | 
						|
        # Create dump file for restores.
 | 
						|
        /opt/pgsql-$oldver/bin/pg_ctl -D /var/lib/postgres/olddata/ start
 | 
						|
        /opt/pgsql-$oldver/bin/pg_dumpall >> /var/lib/postgres/olddata/dump.psql
 | 
						|
        /opt/pgsql-$oldver/bin/pg_ctl -D /var/lib/postgres/olddata/ stop
 | 
						|
        # Restart the service.
 | 
						|
        if [ -f /usr/lib/systemd/system/grimoire.service ]; then systemctl start grimoire; else systemctl start postgresql.service; fi
 | 
						|
        echo "Updated PostGreSQL databases" | tee -a $logfile
 | 
						|
    fi
 | 
						|
else
 | 
						|
    checkupdates | tee -a $logfile
 | 
						|
fi
 | 
						|
echo | tee -a $logfile
 | 
						|
 | 
						|
# Get AUR list of update candidates
 | 
						|
echo == AUR Candidate List == | tee -a $logfile
 | 
						|
if [ ! -z "$apply" ]; then
 | 
						|
    cower -u | cut -f 2 -d ' ' &> $tmpfile
 | 
						|
    echo Edit the package list.
 | 
						|
    read
 | 
						|
    ${EDITOR} ${tmpfile}
 | 
						|
    chmod 0755 $tmpfile;
 | 
						|
    printf "What deprivileged user do you want to use? "
 | 
						|
    read deprivuser;
 | 
						|
    sudo -u "$deprivuser" /bin/bash -c "for i in `cat $tmpfile`; do cd /usr/local/src/"$i"; git pull; makepkg -sri; done"
 | 
						|
    (echo Updated the following AUR packages:; cat $tmpfile) | tee -a $logfile
 | 
						|
    rm $tmpfile;
 | 
						|
else 
 | 
						|
    cower -u | tee -a $logfile
 | 
						|
fi
 | 
						|
echo | tee -a $logfile
 | 
						|
 | 
						|
# Generate list of installed packages
 | 
						|
echo == Generated installed-packages list == | tee -a $logfile
 | 
						|
pacman -Qqe | egrep '^[a-z]' | sed 's#local/##' > /var/log/installed-packages.txt
 | 
						|
 | 
						|
# Generate list of orphaned packages
 | 
						|
echo == Generated orphaned-packages list == | tee -a $logfile
 | 
						|
pacman -Qdtq > /var/log/orphaned-packages.txt
 | 
						|
echo | tee -a $logfile
 | 
						|
date | tee -a $logfile
 | 
						|
printf '\n\n' | tee -a $logfile
 | 
						|
 | 
						|
if [ -z "$apply" ]; then cat $logfile | mail -s "AniNIX::$(hostname) Update Candidates" sh1k0b4@gmail.com; fi
 |