Posts tagged: script

two-line bash script to extract all rars in a given folder

By , 2013-02-15 12:15

This script will find all .rar files in a given directory and extract them into the specified directory. Requires the unrar binary installed in PATH.

usage: unrar-recursive.sh [directory to scan] [extraction destination dir]

  • Running the script without arguments will search for all .rar files in the current directory and subdirectories and extract them all to the current working directory.
  • Running the script with only 1 argument will search for all .rar files in the specified directory and extract them into the same directory.
#!/bin/bash
if [ "$#" -eq 0 ]; then dest=$1; else dest=$2; fi
find $1 -type f -iname "*.rar" -exec unrar e {} $dest \;

Sources:

Quick and dirty bash script to apt-get update all OpenVZ containers

By , 2011-11-30 22:29

It’s a bit of a pain having to run upgrades on all servers. I could of course, set up unattended upgrades, but I always liked initiating the upgrade process myself. So I wrote a little bash script that will initiate apt-get update and apt-get upgrade on all running OpenVZ containers.

Note that this only works for Debian-based distros. So Debian, *buntu, Linux Mint and the like.

It’s very rough, no error-handling or safeguards, so use at your own risk. Works for me, but YMMV.

#!/bin/bash
#Delete temp file
rm /tmp/tmp-script.sh
#Get running VZ
CTIDS=$(vzlist | awk '{print $1}' | sed -e '/CTID/d' -e ':a;N;$!ba;s/\n/ /g' )
# Echo list of running IDs
echo "$CTIDS"
CTIDarray=($CTIDS)
for x in ${CTIDarray[@]}
do
    echo "#/bin/bash" > /tmp/tmp-script.sh
    chmod +x /tmp/tmp-script.sh
    echo vzctl exec $x "apt-get update &&;  apt-get -y upgrade" >> /tmp/tmp-script.sh
    screen -d -m /tmp/tmp-script.sh
done
#Delete temp file
rm /tmp/tmp-script.sh
#Show running screens
screen -x

First, we rm the /tmp/tmp-script.sh. Starting off with very bad form, I know, feeling lazy right now. Then I use awk and sed to get the IDs of running containers from the output of the vzlist command, and place them on a single line, separated by spaces. Those IDs are than put in an array, so that the update command can be called using a for loop.

For some reason, I couldn’t get screen to launch the

vzctl exec $x "apt-get update &&  apt-get -y upgrade"

command directly, hence the hideous use of a temp file. If anyone can fix/improve this, I would be glad to hear from you!

Quick bash script to restore all OpenVZ dumps

By , 2011-10-05 22:57

This script will read the container ID from the file name, and use it to restore the tgz dump to the same ID on the new OpenVZ/Proxmox server.

Note that this only works if the default name for the vzdumps is kept, and it only works for the next 89 years, because I’m lazy.

Thanks to
http://www.cyberciti.biz/faq/bash-loop-over-file/ and http://bashcurescancer.com/10-steps-to-beautiful-shell-scripts.html

#!/bin/bash
VZDUMPS=/path/to/backups/*.tgz
for f in $VZDUMPS
 
do
        f2=${f#*openvz-}
        VEID=${f2%-20*}
        echo "Restoring $f to $VEID"
        vzrestore $f $VEID
done

Wine Launcher GUI "frontend" for Mac OS X

By , 2009-12-31 12:31

Yesterday I installed Wine 1.1 on my Mac using MacPorts. It works great, however it’s not as well integrated as wine on Linux or CrossOver on Mac. What I mean by this is that it’s not possible to double-click a Windows EXE and have it open with wine. So I made a quick and dirty app using Platypus (http://www.sveinbjorn.org/platypus) to allow me to launch Windows executables directly from Finder.
WineLauncherOSX

Simple FLAC to MP3 shell script

By , 2009-09-10 21:41

For unix-like systems (Mac OS X, Linux). A simple shell script to convert flac to lame mp3.

Install flac, lame and id3tool

#!/bin/bash
for a in *.flac
do
OUTLAME=`echo "$a" | sed s/\.flac$/.mp3/g`
ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
ALBUM=`metaflac "$a" --show-tag=ALBUM | sed s/.*=//g`
TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
GENRE=`metaflac "$a" --show-tag=GENRE | sed s/.*=//g`
TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
YEAR=`metaflac "$a" --show-tag=DATE | sed s/.*=//g`
flac -c -d "$a" | lame -m j -q 0 --vbr-new -V 0 -s 44.1 - "$OUTLAME"
id3tool --set-title="$TITLE" --set-track="${TRACKNUMBER:-0}" --set-artist="$ARTIST" --set-album="$ALBUM" --set-year="$YEAR" --set-genre="${GENRE:-12}" "$OUTLAME"
done

Edit: Apparently this has been done before…
http://pastebin.com/f641a9b21

Custom theme by me. Based on Panorama by Themocracy