Bash

I use several small though nifty bash scripts daily.

pass.sh
Generates random 10 char A-Za-z0-9_ password. Simple but Extremely convenient to generate annoying but moderately safe passwords.

#!/bin/bash
</dev/urandom tr -dc A-Za-z0-9_ | head -c10
echo

Oberon.sh
Connects to gateway home server over ssh. Checks if I am at home or outside by checking a webpage on that server, if it loads, it connects to the internal IP; if not it gets the IP adress from a webpage (I made Jopin for exactly this purpose) and connects to that with some extra tunnels in place.

#!/bin/bash

# Global
user="gert"
command="ssh"

# Internal
IIp="192.168.0.1" #The internal IP
IMagicWord="works!" #The string for which to test to see if the server is available
ITunnel="-L6666:192.168.4.2:22" # Tunnels to create when on the internal network

# External
EIp_log="~/.IPlog" #place to log IPs, IP is read from this file.
   #  This creates a race condition vuln so keep the file in your home dir;
   #  This also creates a way to try the last known IP when the IP query fails
EIp_Source="http://your.server.org/homeIP" #A file on the internet containing your home IP
ETunnel="-L 84:localhost:80 -L 85:192.168.1.2:80" #Tunnel some stuff
EPort="-p 22" # Port to use to connect to your home setup


if [[ $( curl -s --connect-timeout 1 $IIp | grep -o $IMagicWord ) = $IMagicWord ]];
then
 command="$command $user@$IIp $ITunnel"
else
 EIp=$( curl -s $EIp_Source )
 echo $( date )  -  $EIp >> $EIp_log
 # Comment out the next line to eliminate the IP caching and thus the race condition vuln
 EIp=$( tail $EIp_log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$' | tail --lines 1 )
 command="sudo $command $user@$EIp $EPort $ETunnel" # The sudo is only necessary if you want to use low ports for a tunnel
fi

echo $command
$command

remote_tar.sh
I use this as a crude way to set up a dated backup. The script connects over ssh, tars the content you request and saves the resulting archive to your harddisk. You will need to input your password manually or use public key auth.

#!/bin/bash
# Tar remote location

# Remote data
user="username"
serv="remote server"
map="/map/you/want"
tar="tar cvz" # The tar command with necessary parameters
files="* .emacs*" # The files you want tarred
extra_options="--exclude=backup*" # The files you Dont want tarred and more options

# Local data
destination="/home/you/backup" #where you want to store the backups
filename="backup.$serv.$( date +%y%m%d ).tgz" # Format of the backup tar; this one ll be something like "backup.remote server.100427.tgz"

# magicks
ssh $user@$serv "cd $map && $tar $files $extra_options" > $destination/$filename

For those it may help ;)

  • *mouth open in amazement* xbmc just downloaded the subtitles on the fly from some site; who knows WHERE! This is Spectacular software! 18 weeks 11 hours ago
  • Very unrealistic dialogue and plot 18 weeks 21 hours ago

Site QR Code

Use this code at your own peril; I am not responsible for anything that happens to you or your devices. You re a big boy or girl, please do some research before using it if you have any concerns!