first try of bash script
This commit is contained in:
49
reverse_dpkg.sh
Executable file
49
reverse_dpkg.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage: ./reverse_dpkg.sh <dpkg.log_file> [--run]
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <dpkg.log_file> [--run]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_file="$1"
|
||||
run_flag=false
|
||||
|
||||
# Check for --run flag
|
||||
if [ "$2" == "--run" ]; then
|
||||
run_flag=true
|
||||
fi
|
||||
|
||||
remove_commands=""
|
||||
install_commands=""
|
||||
|
||||
while IFS= read -r line; do
|
||||
if [[ "$line" == *"remove"* ]]; then
|
||||
package=$(echo "$line" | awk '{print $3}')
|
||||
remove_commands="$remove_commands $package"
|
||||
elif [[ "$line" == *"install"* ]]; then
|
||||
package=$(echo "$line" | awk '{print $3}')
|
||||
install_commands="$install_commands $package"
|
||||
fi
|
||||
done < "$log_file"
|
||||
|
||||
# Generate commands
|
||||
apt_commands=""
|
||||
if [ ! -z "$remove_commands" ]; then
|
||||
apt_commands+="sudo apt remove $remove_commands\n"
|
||||
fi
|
||||
if [ ! -z "$install_commands" ]; then
|
||||
apt_commands+="sudo apt install $install_commands\n"
|
||||
fi
|
||||
apt_commands+="sudo apt --fix-broken install\n"
|
||||
apt_commands+="sudo apt autoremove\n"
|
||||
|
||||
# Output or run commands
|
||||
if [ "$run_flag" == true ]; then
|
||||
echo "Executing commands:"
|
||||
echo "$apt_commands" | bash
|
||||
else
|
||||
echo "Generated commands:"
|
||||
echo "$apt_commands"
|
||||
fi
|
||||
Reference in New Issue
Block a user