نسخه فارسی | English Version
Choose one of the 21 topics below for your team's CLI tool project. Each tool must be implemented in Bash and packaged as a Debian package.
A tool similar to du that optimizes output to display the most readable and resource-intensive directories.
Suggested Commands: du, sort, head, awk
Features to implement:
- Analyze directory sizes recursively
- Sort and display top space-consuming directories
- Human-readable output format
- Optional depth limit
A script to clean or archive old log files based on size, date, or count.
Suggested Commands: find, du, rm, tar, gzip
Features to implement:
- Find logs older than specified days
- Archive logs before deletion
- Set size thresholds for cleanup
- Preserve recent logs
A simple backup tool that backs up a specified directory, names it with timestamp, and removes old versions.
Suggested Commands: tar, rsync, date, find
Features to implement:
- Create timestamped backups
- Incremental or full backup options
- Automatic old backup rotation
- Compression support
Monitors a directory for any changes (create, delete, edit files) and reports them.
Suggested Commands: inotifywait (from inotify-tools) or find and stat in a loop
Features to implement:
- Real-time file system monitoring
- Event type detection (create, modify, delete)
- Log changes to file or stdout
- Filter by file types
Creates numbered archives (like project-v1.tar.gz) from a project or directory and provides the ability to restore old versions.
Suggested Commands: tar, ls, sed
Features to implement:
- Auto-increment version numbers
- List available versions
- Restore specific versions
- Version comparison
A more powerful tool than simple grep that searches files by name and content matching regex patterns.
Suggested Commands: find, grep (with -E option), sed
Features to implement:
- Search by filename pattern
- Search by file content
- Combine multiple search criteria
- Display context around matches
A tool for managing dotfiles (like .bashrc, .vimrc) by creating symlinks from a central repository to home directory.
Suggested Commands: ln -s, git, find
Features to implement:
- Initialize dotfile repository
- Install/uninstall dotfiles
- Backup existing dotfiles
- Sync across multiple machines
Live and simple display of CPU, RAM, and Swap usage in the terminal.
Suggested Commands: top, free, vmstat, awk, watch
Features to implement:
- Real-time CPU usage per core
- Memory usage breakdown
- Swap usage monitoring
- Configurable refresh rate
Report on system users' activity including last login time, online duration, and active process count.
Suggested Commands: who, last, w, ps
Features to implement:
- List currently logged-in users
- Show login history
- Display user process statistics
- Calculate session durations
Display, filter, and send signals (like KILL, TERM, HUP) to processes based on name, user, or resource consumption.
Suggested Commands: ps, pgrep, pkill, kill
Features to implement:
- List processes with filters
- Send signals to processes
- Sort by CPU/memory usage
- Interactive process selection
A text dashboard showing overall system status (Load Average, Disk Space, Memory, Uptime).
Suggested Commands: uptime, df, free, iostat
Features to implement:
- System load overview
- Disk space warnings
- Memory pressure detection
- Service status checks
Reads system log files (like syslog or auth.log) and extracts important statistics such as error counts, failed login attempts, etc.
Suggested Commands: grep, awk, sort, uniq -c
Features to implement:
- Parse common log formats
- Extract error patterns
- Count event types
- Generate summary reports
Similar to the previous project, but displays statistics as text-based charts (ASCII bar charts) in the terminal.
Suggested Commands: grep, awk, sort, uniq, and Bash logic for chart generation
Features to implement:
- ASCII bar charts
- Time-based graphs
- Trend visualization
- Customizable chart types
Maintains a "golden" version of configuration files and reports if original files change.
Suggested Commands: diff, md5sum or sha256sum
Features to implement:
- Baseline configuration storage
- Change detection
- Diff report generation
- Restore original configs
Using system tools, scans and reports open ports on a specific host.
Suggested Commands: netcat (nc), nmap (wrapper), or /dev/tcp/
Features to implement:
- Scan single or range of ports
- TCP/UDP scanning
- Service detection
- Output formatting
Periodically checks a list of URLs or IP:Port and alerts if unavailable.
Suggested Commands: curl, wget, ping, nc
Features to implement:
- Monitor multiple endpoints
- HTTP status code checking
- Response time tracking
- Alert on failures
A tool that periodically (using cron) checks system log files or a specified path, compresses or deletes old/large logs, and records operation reports.
Suggested Commands: find, du, gzip, date, awk, cron
Features to implement:
- Scheduled log rotation
- Size-based and age-based cleanup
- Log compression before deletion
- Operation logging
- Configurable retention policies
An automated backup tool that uses cron to back up a specified path, compresses it, and saves it to a standard system location.
Suggested Commands: tar, rsync, find, date, cron
Features to implement:
- Automated scheduled backups
- Incremental and full backup modes
- Compression and storage management
- Old backup cleanup
- Backup verification
A simple tool for adding, removing, and listing tasks (TODOs) or short notes stored in a text file.
Suggested Commands: echo, grep, sed
Features to implement:
- Add/remove/list tasks
- Mark tasks as done
- Priority levels
- Search functionality
Identifies and cleans system temporary files and application caches (e.g., apt or dnf) and reports freed space.
Suggested Commands: find, rm, du
Features to implement:
- Safe cache detection
- Dry-run mode
- Space calculation
- User confirmation
A tool that reports connection status to various servers on a network using a combination of ping and port checking.
Suggested Commands: ping, fping, nc, traceroute
Features to implement:
- Multiple host checking
- ICMP and TCP testing
- Latency measurement
- Connectivity reports
- Choose based on interest: Pick a topic that matches your team's interests and skill level
- Consider complexity: Some topics are more challenging than others
- Unique implementation: Each team should choose a different topic (coordinate with other teams)
- Feature completeness: Implement all core features before adding extras
- User experience: Focus on making the tool useful and easy to use
- Review the Main README for setup instructions
- Check Debian Packaging Guide for packaging help
- See Publishing Guide for submission instructions
- Ask your instructor or TAs for clarification