96774aba35facf2b77fdbd84e9d6c3141ad43668
log_inspect.sh discarded grep's stderr and ignored its exit status, so an unprivileged search over root-owned logs was indistinguishable from a search that genuinely found nothing. grep's three outcomes now mean three different things: matched, matched nothing, or could not read everything -- the last of which says so and exits non-zero. Confirmed grep returns 2 rather than 1 in that case, which is why the naive "status -eq 1" check would never have fired. service_manager.sh validates the action before dispatch and requires root for the five that change system state, leaving status and list open to anyone. $action is quoted at both call sites. rsync_magic.sh had --inplace on unconditionally. It writes straight into destination files instead of to a temporary and renaming, so an interrupted run leaves them partially overwritten -- the opposite of what a backup tool should guarantee. Now opt-in, with a warning when used. Its log lives under /var/log and every line pipes through tee, so under pipefail an unprivileged run died on the first line with a bare permission error; it now falls back to stdout rather than failing the sync over its own logging. --delete also confirms before running, since reversing the two arguments erases the backup. disk_cleanup.sh moves from `set -o pipefail` to full strict mode, with the two pipelines that legitimately return non-zero handled at their call sites rather than by leaving the script lax. Its "largest files" walk also gained -xdev, which it was missing while security_audit.sh next door already had it -- without it the walk descends /proc, /sys and every network mount. All fifteen scripts now run under set -euo pipefail.
Linux System Administration Scripts
Automate routine tasks: This project provides a collection of Bash scripts to automate common Linux system administration duties. Automating daily sysadmin tasks improves efficiency and consistency by reducing manual repetition and the risk of human error. Each script is designed to be distribution-agnostic, using only standard base utilities (e.g. rsync, tar, awk, grep, netstat/ss, systemctl) available on most Linux systems. All scripts are released under the GNU GPL v3.0 license and include usage information in their headers.
Included Scripts
backup.sh– Backup Utility: Archive directories into compressed tarballs for backups.restore.sh– Restore Utility: Restore files from backup archives.disk_cleanup.sh– Disk Usage & Cleanup: Report disk usage and identify large files; optionally clean package caches and temporary files to free space.log_inspect.sh– Log Inspection: Search within log files or tail the latest system logs for troubleshooting.log_rotate.sh– Log Rotation: Compress and rotate old log files to prevent excessive disk usagenetwork_info.sh– Network & Firewall Info: Show network interface details, routing table, open listening ports, and basic firewall (iptables) rules.process_monitor.sh– Process Management: List top resource-consuming processes and allow termination of processes by name or PID.security_audit.sh– Security Audit: Scan for security issues like world-writable files, SUID/SGID executables, and open network ports.service_manager.sh– Service Management: Start, stop, restart, or check status of system services, and enable/disable services at boot.sys_monitor.sh– System Monitoring: Display system uptime, resource utilization (CPU, memory, disk), and top processes.update_system.sh– System Updates: Apply available package updates and patches (works with apt, yum/dnf, zypper, pacman).user_manage.sh– User and Group Management: Create or remove user accounts and groups, modify user group memberships, and lock/unlock accounts.zimbra_backup.sh- Create a backup for a zimbra mailbox.zimbra_restore.sh- Restore a backup for a zimbra mailbox.rsync_magic.sh- A smart Bash script that wraps rsync for safe, flexible, and efficient file synchronization and backups.
Languages
Shell
100%