206 lines
4.6 KiB
Bash
206 lines
4.6 KiB
Bash
#!/bin/bash
|
|
|
|
# 4RCH maintenance
|
|
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
|
|
# (GNU/General Public License version 3.0)
|
|
|
|
# ---------------------------------------
|
|
# Define Functions:
|
|
# ---------------------------------------
|
|
|
|
handlerror () {
|
|
clear
|
|
set -uo pipefail
|
|
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
|
|
}
|
|
|
|
welcomer () {
|
|
clear
|
|
echo "==================================================="
|
|
echo "= ="
|
|
echo "= 4RCH Maintenance Script ="
|
|
echo "= ="
|
|
echo "= ="
|
|
echo "= Version 2.3 (Release) ="
|
|
echo "= ="
|
|
echo "= Brought to you by M3DEV ="
|
|
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
|
|
echo "= ="
|
|
echo -e "=================================================== \n"
|
|
sleep 4
|
|
}
|
|
|
|
failedsrvs () {
|
|
clear
|
|
systemctl --failed > /tmp/failedsrvs
|
|
nano /tmp/failedsrvs
|
|
clear
|
|
echo -e "\n"
|
|
rm /tmp/failedsrvs
|
|
clear
|
|
}
|
|
|
|
journalchk () {
|
|
clear
|
|
journalctl -p 3 -xb > /tmp/journalchk
|
|
nano /tmp/journalchk
|
|
clear
|
|
echo -e "\n"
|
|
rm /tmp/journalchk
|
|
clear
|
|
}
|
|
|
|
journalcln () {
|
|
clear
|
|
journalctl --vacuum-time=2weeks
|
|
clear
|
|
echo -e "\n"
|
|
echo "Journal directory cleaned"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
sysupdate () {
|
|
clear
|
|
pacman -Syu
|
|
clear
|
|
echo -e "\n"
|
|
echo "Full system upgrade finished"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
pkgsccache () {
|
|
clear
|
|
pacman -Scc
|
|
clear
|
|
echo -e "\n"
|
|
echo "Package cache cleaned"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
keysreset () {
|
|
clear
|
|
rm /var/lib/pacman/sync/*
|
|
rm -rf /etc/pacman.d/gnupg/*
|
|
pacman-key --init
|
|
pacman-key --populate
|
|
pacman -S --noconfirm archlinux-keyring
|
|
clear
|
|
echo -e "\n"
|
|
echo "All pacman keys are reset"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
usercachecln () {
|
|
clear
|
|
echo "[Unit]
|
|
Description=Clean primary user cache on boot.
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
|
|
echo "#!/bin/bash
|
|
rm -r /home/*/.cache/*
|
|
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
|
|
chmod +x /usr/local/bin/clnusercache.sh
|
|
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
|
|
clear
|
|
echo -e "\n"
|
|
echo "User's cache directory cleaned on next boot"
|
|
sleep 3
|
|
clear
|
|
}
|
|
|
|
runreflector () {
|
|
clear
|
|
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
|
|
clear
|
|
echo -e "\n"
|
|
echo "Mirrorlist regenerated"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
enfirewall () {
|
|
clear
|
|
systemctl enable firewalld.service
|
|
systemctl start firewalld.service
|
|
clear
|
|
echo "Firewalld Service is enabled"
|
|
sleep 2
|
|
clear
|
|
}
|
|
|
|
mainmenu () { while true
|
|
do
|
|
clear
|
|
echo "-------------------------------------"
|
|
echo " 4RCH Maintenance Script"
|
|
echo "-------------------------------------"
|
|
echo ""
|
|
echo " 1) Failed systemd services"
|
|
echo " 2) Check journal logs"
|
|
echo " 3) Cleanup journal space"
|
|
echo " 4) Run system update"
|
|
echo " 5) Clean package cache"
|
|
echo " 6) Reset all pacman keys"
|
|
echo " 7) Clean user cache on next boot"
|
|
echo " 8) Regenerate mirrorlist"
|
|
echo " 9) Enable Firewalld Service"
|
|
|
|
echo ""
|
|
echo " X) Exit"
|
|
echo -e "\n"
|
|
read -p "Enter your choice: " optionA
|
|
case $optionA in
|
|
1 ) failedsrvs ;;
|
|
2 ) journalchk ;;
|
|
3 ) journalcln ;;
|
|
4 ) sysupdate ;;
|
|
5 ) pkgsccache ;;
|
|
6 ) keysreset ;;
|
|
7 ) usercachecln ;;
|
|
8 ) runreflector ;;
|
|
9 ) enfirewall ;;
|
|
x|X ) exit;;
|
|
* ) invalid ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
ROOTUSER () {
|
|
if [[ "$EUID" = 0 ]]; then
|
|
continue
|
|
else
|
|
echo "Please Run As Root"
|
|
sleep 2
|
|
exit
|
|
fi
|
|
}
|
|
|
|
ROOTUSER
|
|
handlerror
|
|
welcomer
|
|
mainmenu
|
|
|
|
done
|
|
|
|
# Disclaimer:
|
|
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
|
|
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
|
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
# END
|