Hammer script to get output from Job by id

This is a simple script I use to export the details from a Job run in Red Hat Satellite 6.2 using hammer from the console.

#!/bin/bash
# Redhat Satellite Job query by id using hammer

if [ $1 -eq $1 ] 2>/dev/null; then
# get hosts run by ID
JOBHOSTS=$(hammer job-invocation info –id $1 | sed ‘1,/Hosts/d’ | awk {‘print $2’} | awk ‘NF’)

# Loop hosts
for HOST in $JOBHOSTS
do
echo “================================================================================
$HOST
================================================================================”
hammer job-invocation output –id $1 –host $HOST
echo “”
done
else
echo “You need to type the Job ID”
fi

Generate IP-address ranges using simple bash script

This is just a simple script to generate IP-addresses in a IP-range and write the result output to a file.
The script does also remove addresses you would like to exclude from the final output.

#!/bin/bash
OUTFILE="mk-iprange.txt"
IPRANGE="192.168.0 
192.168.1"
EXCLUDE="192.168.0.1
192.168.0.2
192.168.1.1"

# Remove old OUTFILE
rm -f $OUTFILE

# Loop addresses, write to OUTFILE
for IP in $IPRANGE
do
        seq -f "$IP.%g" 1 255 >> ./$OUTFILE
done

# Exclude IP-addresses from file (inplace replacement)
for EX in $EXCLUDE
do
        sed --in-place "/$EX/d" ./$OUTFILE
done

Another way to randomize filenames

This post describes an easier way to randomize filenames using the command openssl compared to my previous post named Randomize filenames.

#!/bin/bash
for filename in *.JPG
do
mv "$filename" $(echo "$filename" | openssl rand -hex 3).JPG
done

After running this script the filenames can look something like this

26333c.JPG
a8c7a0.JPG
b16b22.JPG
d69a67.JPG
...

The rand option creates a random value from $filename.

Create random filenames with random content

I wanted to test filesystem checking on a large XFS filesystem and needed to fill the filesystem. The task was to create files on random with different file size and names placed in different folders.

The script I found on the Internet does exactly that

#!/bin/bash
# Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008
######## User settings ############
MAXDIRS=15
MAXDEPTH=7
MAXFILES=100000
MAXSIZE=8000000000
######## End of user settings ############
# How deep in the file system are we now?
TOP=`pwd|tr -cd '/'|wc -c`
populate() {
cd $1
curdir=$PWD
files=$(($RANDOM*$MAXFILES/32767))
for n in `seq $files`
do
f=`mktemp XXXXXX`
size=$(($RANDOM*$MAXSIZE/32767))
head -c $size /dev/urandom > $f
done
depth=`pwd|tr -cd '/'|wc -c`
if [ $(($depth-$TOP)) -ge $MAXDEPTH ]
then
return
fi
unset dirlist
dirs=$(($RANDOM*$MAXDIRS/32767))
for n in `seq $dirs`
do
d=`mktemp -d XXXXXX`
dirlist="$dirlist${dirlist:+ }$PWD/$d"
done
for dir in $dirlist
do
populate "$dir"
done
}
populate $PWD

Source: http://linuxgazette.net/153/pfeiffer.html

Script to delete files listed in a file

This is a short one liner bash script to delete files in a file.
The script also handles filenames with space in them.


$ while read file; do rm "$file"; done < filename.txt

To generate a filename.txt file by searching for a specific pattern you can use the following command

$ find / -type f -name "filname*" > filename.txt

You should verify the files you are about to delete before you invoke this script!