#!/bin/bash
#!/bin/bash -e
#-Försöker få whiptail att fungera med bash - Mest som ett test-#
version="0.6.1"
www="http://alturl.com/w9wbu"
email="hynten@speed-mailer.com"
depends="whiptail fakeroot grep sed dpkg-repack dpkg-dev apt-move sudo \
taskset gzip nano awk perl cowsay toilet rmdupe apt-cdrom genisoimage dd"
#===========================#)
# datum="-`date +%Y-%m-%d`" #)
#===========================#)
#===========================================================#)
# Then when I need to colourize some output #)
#=============================0=============================#)
black() { echo "$(tput setaf 0)$*$(tput setaf 9)"; } #)
red() { echo "$(tput setaf 1)$*$(tput setaf 9)"; } #)
green() { echo "$(tput setaf 2)$*$(tput setaf 9)"; } #)
yellow() { echo "$(tput setaf 3)$*$(tput setaf 9)"; } #)
blue() { echo "$(tput setaf 4)$*$(tput setaf 9)"; } #)
magenta() { echo "$(tput setaf 5)$*$(tput setaf 9)"; } #)
cyan() { echo "$(tput setaf 6)$*$(tput setaf 9)"; } #)
white() { echo "$(tput setaf 7)$*$(tput setaf 9)"; } #)
#===========================================================#)
# echo -en "\033[s\033[7B\033[1;34m 7 violet \033[u\033[0m" #)
# echo -en "\033[s\033[7A\033[1;32m 7 green \033[u\033[0m" #)
#===========================================================#)
#---PASSWORD-CHECK-START----------------------------------------------------------------------------------------------------#
get_password() {
exec 3>&1
REPLY=`whiptail --ok-button 'Unlock' --nocancel --passwordbox 'Enter password:' 7 21 2>&1 1>&3`
exec 3>&-
return 0
}
while
get_password
[[ $REPLY != '0' ]]
do
whiptail --ok-button 'Try again' --msgbox 'Access denied!' 7 19
done
whiptail --ok-button 'Continue' --msgbox 'Access granted!' 7 19
#---------------------------------------------------------------------------------------------------------#
#-----------------------------------------------------------------------------------------------#
function EDIT-SOURCES-LIST () {
nano /etc/apt/sources.list
}
#------------------------------------------------------------------------------------------------#
#===========================#)
#======================================================hynten@speed-mailer.com=======================================#)
CREATE-CHROOT-IN-MNT() { #)
reset #)
echo "chroot" #)
echo "[-> run command or interactive shell <-]" #)
echo "[-> with special root directory <-]" #)
echo "[->----------------------------------<-]" #)
sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt #)
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done #)
sudo cd / ; sudo chroot /mnt ; sudo grub-install --recheck /dev/sda ; sudo update-grub #)
return 0 #)
} #)
TEST-CHROOT-IN-MNT() {
#====================================================================================================================#)
# Script: test-chroot <- no .sh this is a command like whoami
# Author: hynt@speed-mailer.com
# url: http://alturl.com/u9qoh
#
# Date: 2015-04-19 - 01 (ee = times edited)
#
# Purpose: Detecting a chroot jail from within
# without root privileges?
#
# Notes: sudo chmod u=rwx,g=rx,o=r test-chroot
# sudo cp test-chroot /bin
# Now you write test-chroot,
# And the program starts---
#
clear
echo "☢TEST-CHROOT☢"
echo "-------------------------------"
echo "If you are not in a chroot"
echo "the inode for / will always be 2"
echo "now check that is: ☻"
echo "-------------------------------"
printf 'Inode: %s\n' $( stat -c %i / )
printf ' User: %s\n' $( whoami )
printf ' Path: %s\n' $( pwd )
echo "-------------------------------"
return 0 #)
}
START-CHROOT-IN-MNT() {
reset
echo "now enter chroot"
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
cd / ; sudo chroot mnt
clear
echo "☢TEST-CHROOT☢"
echo "-------------------------------"
echo "If you are not in a chroot"
echo "the inode for / will always be 2"
echo "now check that is: ☻"
echo "-------------------------------"
printf 'Inode: %s\n' $( stat -c %i / )
printf ' User: %s\n' $( whoami )
printf ' Path: %s\n' $( pwd )
echo "-------------------------------"
}
#=======hynten@speed-mailer.com============#)
SUDO-2-USER() { #)
reset #)
echo "-> ADD USER 2 SUDO LIST <-" #)
echo "-> Enter User:" #)
read usr ; sudo usermod -a -G sudo $usr #)
return 0 #)
} #)
#==========================================#)
function REMOVE-ALL-INSTALLED-TODAY () {
whiptail --title "REMOVE ALL PACKAGES INSTALLED TODAY" --msgbox "This can come in handy one day.." 8 78
read -p 'Are you sure you want to continue? (y/n) ' -n 1 confirmation
echo ''
if [[ $confirmation != 'y' && $confirmation != 'Y' ]]; then
exit 3
fi
dpkg -l | awk '{print $2}' > `date +%Y-%m-%d`-all-installed-before-today-removes.packages
grep -e `date +%Y-%m-%d` /var/log/dpkg.log | awk '/install / {print $4}' | uniq | xargs apt-get -y remove
}
#----------------------------------------------------------------------------#
function REMOVE-REPEATED-PPA () {
whiptail --title "REMOVE REPEATED PPPA" --msgbox "Remove All Repeated PPA in Sources.list" 8 78
cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list
sleep 4
whiptail --msgbox "Now your /etc/apt/sources.list is free from repeated PPA...." --title "Ok! all done.." --backtitle "hynten@speed-mailer-com" 12 60
}
#----------------------------------------------------------------------------#
#----------------------------------------------------------------------------#
function QUIT () {
reset
red "Bye!... Nice to meet yaa! cya later!"
red "look 4 new version: http://alturl.com/w9wbu"
sleep 3
exit
}
#------------------------------------------------------------------------------#
#----------------------------------------------------------------------------#
function DPKG-REPACK () {
whiptail --title "DPKG-REPACK" --msgbox "All Installed Packages create repack 2 *.deb files script" 8 78
repackSavePath=$(whiptail --inputbox "Where To Save Created Script:?" 8 78 "/home/hynt/" --title "Enter like ex. /home/hynt/backup/" 3>&1 1>&2 2>&3)
dpkg -l | awk '{print $2}' | sed "s/^/\ fakeroot -u dpkg-repack /; s/$/\ /;" > /$repackSavePath/repack-all-packages-`date +%Y-%m-%d`.sh
sed '1,6d' < /$repackSavePath/repack-all-packages-`date +%Y-%m-%d`.sh > /$repackSavePath/repack-all-package-`date +%Y-%m-%d`.sh
rm /$repackSavePath/repack-all-packages-`date +%Y-%m-%d`.sh
chmod u=rwx,g=rx,o=r /$repackSavePath/repack-all-package-`date +%Y-%m-%d`.sh
}
#----------------------------------------------------------------------------#
#----------------------------------------------------------------------------#
function ADD-PACKAGE-TO-INSTALL () {
CommandToInstallToScript="sudo apt-get --ignore-missing install "
AddedPackagePath=$(whiptail --inputbox "Where To Append Package:?" 8 78 "/home/hynt/" --title "Enter like ex. /home/hynt/ no need to enter filename" 3>&1 1>&2 2>&3)
AddedPackage=$(whiptail --inputbox "Enter Package To Add:?" 8 78 "?" --title "Add-Package-2-Install-Script" 3>&1 1>&2 2>&3)
#$COMMAND + $INPUT >> $PATCH $FILE
sudo sh -c "echo \"$CommandToInstallToScript $AddedPackage\" >> /$AddedPackagePath/install.sh" ; red "......" ; sleep 1
chmod u=rwx,g=rx,o=r /$AddedPackagePath/install.sh
red "RESTART-SCRIPT" ; RESTART-SCRIPT ; sleep 2
}
#----------------------------------------------------------------------------#
function ALL-INSTALLED-PACKAGES () {
AllInstalledPackagesSavePath=$(whiptail --inputbox "Where To Save Created Script:?" 8 78 "/home/hynt/" --title "Enter like ex. /home/hynt/backup/" 3>&1 1>&2 2>&3)
cat /etc/apt/sources.list >> /$AllInstalledPackagesSavePath/sources.list
sudo dpkg --get-selections | awk '$2 ~ /^install$/ {print $1}' > /$AllInstalledPackagesSavePath/installed
sort $AllInstalledPackagesSavePath/installed | uniq -u >> /$AllInstalledPackagesSavePath/installed
awk '{print "sudo apt-get -y --force-yes --allow-unauthenticated --ignore-missing install --reinstall " $0}' < /$AllInstalledPackagesSavePath/installed > $AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
perl -pi -e 'print "sudo cp sources.list /etc/apt/ && sudo apt-get update\n" if $.==1' /$AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
perl -pi -e 'print "#! /bin/bash\n" if $.==1' $AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
echo "sudo apt-get dist-upgrade" >> /$AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
chmod u=rwx,g=rx,o=r /$AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
sleep 2
rm $AllInstalledPackagesSavePath/installed
sudo echo echo "hynten@speed-mailer.com" >> $AllInstalledPackagesSavePath/installed-package-installer-`date +%Y-%m-%d`.sh
red "RESTART-SCRIPT" ; RESTART-SCRIPT ; sleep 4
}
#----------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
function REBOOT-THE-SYSTEM () {
whiptail --title "reboot the system" --msgbox "Reboot in 5 second" 8 78
read -p 'Are you sure you want to continue? (y/n) ' -n 1 confirmation
echo ''
if [[ $confirmation != 'y' && $confirmation != 'Y' ]]; then
exit 3
fi
reset
seconds=5
(
for i in $(seq $seconds -1 1); do
reset
red "$i seconds to shutdown...";
sleep 1;
done;
red "Shutdown now!")
sudo reboot # REBOOT THE COMPUTER
}
#---------------------------------------------------------------------------#
#---------------------------------------------------------------------------#
function MIRROR-HARD-DRIVE-2-USB () {
reset
red "mount" ; sudo mount
red "fdisk -l" ; sudo fdisk -l
red "-------hynten@speed-mailer.com-----------------------------"
red "- ____ _ _ -"
red "- | __ ) __ _ ___| | ___ _ _ __ | | -"
red "- | _ \ / _ |/ __| |/ / | | | _ \| | -"
red "- | |_) | (_| | (__| <| |_| | |_) |_| -"
red "- |____/ \__,_|\___|_|\_\\_ _ | __/(_) -"
red "- |_| -"
red "- mount -"
red "- fdisk -l <-- if my settings if the are ok! 4 u -"
red "- -"
red "- dd if=/dev/sda1 of=/dev/sdc1 bs=16M -"
red "- -"
red "- Careful one char wrong and you can fucked up the system -"
red "- The /dev/sdc1 are not mounting while dd works! -"
red "- -"
red "---------------Look Above E-mail 4 your settings!----------"
echo " "
yellow "dd if=/dev/sda? of=/dev/sdc? bs=16M"
}
#---------------------------------------------------------------------------#
#---------------------------------------------------------------------------#
function RESTART-SCRIPT () {
./meny
}
#---------------------------------------------------------------------------#
function LOCAL-REPO () {
reset
echo "---------------------------------------------------------"
echo "- _ _ ____ -"
echo "- | | ___ ___ __ _| | | _ \ ___ _ __ ___ -"
echo "- | | / _ \ / __/ _ | |_____| |_) / _ \ '_ \ / _ \ -"
echo "- | |__| (_) | (_| (_| | |_____| _ < __/ |_) | (_) | -"
echo "- |_____\___/ \___\__,_|_| |_| \_\___| .__/ \___/ -"
echo "- |_| -"
echo "- APT-MOVE , DPKG-SCANPACKAGES -"
echo "- -"
echo "- deb file:/mirrors/debian/ / -"
echo "- <----------------------------> -"
echo "- \ ^__^ -"
echo "- \ (--)\_______ -"
echo "- (__)\ )\/\ -"
echo "- ||----w | -"
echo "- || || -"
echo "---------------http://alturl.com/w9wbu-------------------"
sleep 5
apt-move -a move
echo "apt-move packages" ; taskset -c 0 apt-move -a packages
echo "dpkg-scanpackages"
cd /mirrors/debian/ ; dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz
#cd /mirrors//ftp/debian/ ; dpkg-scanpackages . /dev/null 2> error.txt | gzip -9c > Packages.gz
cd /mirrors/debian/ ; dpkg-scansources -m . /dev/null | gzip -9c > Sources.gz
#cd /mirrors//ftp/debian/ ; grep "!" < error.txt > rm.txt
echo "apt-move sync" && apt-move sync
echo "apt-get clean" && apt-get clean
#next line is not get tested
#cd /var/www/debian/ && sed 's/"dpkg-scanpackages: varning: använde den och ignorerade data från jessie/"/"rm /var/www/debian/jessie/"' rm.txt
reset
toilet --gay "Bye!"
/usr/games/cowsay -t "Email:hynten@speed-mailer.com"
}
#---------------------------------------------------------------------------#
function REMOVE-REPEATED-FILES () {
whiptail --title "REMOVE REPEATED FILES" --msgbox "This Function use the program rmdupe" 8 78
rmdupepath=$(whiptail --inputbox "What dir should we begin with?" 8 78 "/srv/ftp/" --title "Enter like ex. /srv/ftp/" 3>&1 1>&2 2>&3)
rmdupe -r $rmdupepath
}
function PURGE-CONF-OF-REMOVED () {
whiptail --title "REMOVE CONFIG FILES" --msgbox "From already removed packages files" 8 78
sudo aptitude purge `dpkg --get-selections | grep deinstall | awk '{print $1}'`
toilet --gay "have a nice day!"
}
function SCAN-PACKAGES-2-DVD () {
ScanPackages2DvdPath=$(whiptail --inputbox "Scanpackages To Make Your Own Deb dvd/cd?" 8 78 "/home/snort/deb/" --title "Enter like ex. /home/snort/deb/" 3>&1 1>&2 2>&3)
ScanPackages2DvdName=$(whiptail --inputbox "Give me a name to give to the iso file?" 8 78 "MyDebFiles-`date +%Y-%m-%d`" --title "Enter like ex. MyDebFiles-`date +%Y-%m-%d`" 3>&1 1>&2 2>&3)
cd /$ScanPackages2DvdPath/ ; dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz
#cd /$ScanPackages2DvdPath/ ; mv *.sh ../ #flytta inte installerar med den
genisoimage -r -o /$ScanPackages2DvdPath/$ScanPackages2DvdName.iso /$ScanPackages2DvdPath/
whiptail --title "All done!" --msgbox "Burn it with your favorite burn program and run apt-cdrom add" 8 78
}
##################################################################################################################
OPTION=$(whiptail --title "Test Menu Dialog" --menu "Choose your option" --backtitle "Version $version" 15 80 4 \
"ALL-INSTALLED-PACKAGES" "Convert To a Install Script.." \
"ADD-PACKAGE-TO-INSTALL" "Add Package 2 Install Script.." \
"REBOOT-THE-SYSTEM" "Time for a break?" \
"DPKG-REPACK" "ALl installed packages to *.deb" \
"EDIT-SOURCES-LIST" "Use Nano To Edit sources.list" \
"REMOVE-REPEATED-PPA" "In /etc/apt/sources.list" \
"REMOVE-ALL-INSTALLED-TODAY" "Today's installed removes" \
"LOCAL-REPO" "Reindex / Add / Sync Local PPA" \
"REMOVE-REPEATED-FILES" "Remove Repeated files with rmdupe" \
"SCAN-PACKAGES-2-DVD" "Scanpackages To Make Your Own Deb dvd/dvd" \
"MIRROR-HARD-DRIVE-2-USB" "Uses DD Careful copy and paste in terminal" \
"SUDO-2-USER" "Add Normal User To Sudo List!" \
"CREATE-CHROOT-IN-MNT" "Dont runt this if you??" \
"TEST-CHROOT-IN-MNT" "Detecting a chroot jail from within" \
"START-CHROOT-IN-MNT" "Start chroot created with CREATE-CHROOT-IN-MNT" \
"PURGE-CONF-OF-REMOVED" "Purge Config Of Removed Packages Files" \
"QUIT" "Close This Program Say Bye!..." 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
red "Your chosen option:" $OPTION
$OPTION
else
red "You chose Cancel."
fi
##################################################################################################################
# If You Got Problem or somthing like that email: hynten@speed-mailer.com #
##################################################################################################################