Archive for the ‘ Bash ’ Category

Asterisk Voicemail Check Disk Usage Script

This latest script was written to prevent 3:00am phone calls. I was recently called because our voicemail server was beginning to run out of disk space. The following script simply scans the voicemail directory, if a user is over 100MB it looks up their extension in the asterisk database and then sends them an email notification to clean it out. Below is the script:

#!/bin/bash
 
#set the maximum disk usage for a user to approx 100MB
size_limit=100000
 
function send_email () {
 
    subject="Voicemail Over Limit"
    message="/tmp/emailmessage.txt.$f"
 
    echo "Hello $name, " > $message
    echo " " >> $message
    echo "This is a notification that your voicemail is currently over the allowed limit.  You are currently using $humansize.  Please either manually delete the voicemails, or you can send an email to patb@codero.com for help with wiping all of the new and saved voicemails in your mailbox." >> $message
    echo " " >> $message
    echo "Thank you," >> $message
    echo "Admin" >> $message
 
    /bin/mail -s "$subject" "$email" < $message
}
 
for f in $(ls /var/spool/asterisk/voicemail/default/)
do
  size=$(du -s /var/spool/asterisk/voicemail/default/$f | awk '{print $1}')
  if [ "$size" -gt "$size_limit" ]
    then
 
        humansize=$(du -sh /var/spool/asterisk/voicemail/default/$f | awk '{print $1}')
        #Query the database for the users email address
        email=$(mysql -u asterisk --password=dbpassword asterisk -e "select email from voicemail_users where mailbox = '$f'")
        #Parse just the email address out of the above query
        email=$(echo $email | awk '{print $2}' )
 
        name=$(mysql -u asterisk --password=dbpassword asterisk -e "select fullname from voicemail_users where mailbox = '$f'")
        name=$(echo $name | awk '{print $2,$3}' )
        #echo "$name    $f  $email  $humansize"
        send_email $email $name $humansize
  fi
    # take action on each file. $f store current file name
done

Debian/Ubuntu Anti-Virus and Root Kit Scan Script

A customer requested this script, once I started working on it I realized how useful this could be. I have this setup on a weekly CRON task. The script is very simple, it updates ClamAV and RKHunter then scans the server with both and mails the results to the specified email address. If you plan on adding this script to your server, you might want to ensure that you have the correct versions of ClamAV and RKHunter.

Click here to download the script

Click Here to see the full post with install instructions

Debian/Apache2 Virtualized Host Script

I wrote this script so that I could quickly create virtualized subdomains on my server. I wrote it so that all you have to do to reuse it is simply change the first 3 lines of the file to match your server. This is version 1.o and I plan to add some more error handling and improvements further down the road. Feel free to contact me with any feedback or suggestions.

Click Here to see the full Post
or
Click Here to download the script

Random Futurama Quote From Shell

Random Futurama Quotes to fill the day. I just found this awesome site: http://commandlinefu.com. There are a lot of great ideas on this site, I recommend you take a few minutes and check it out. Major props to icco of commandlinefu.com:

Just issue the following command:

curl -Is slashdot.org | egrep '^X-(F|B|L)' | cut -d \- -f 2

Here’s the sample output:

[burnsforce.com ~]# curl -Is slashdot.org | egrep '^X-(F|B|L)' | cut -d \- -f 2
Fry: Robots don't go to heaven.

I’d like to integrate this into the /etc/motd file, so everytime I connect to my server via SSH I get a new quote. I have a few ideas but haven’t gotten around to implementing them yet. If you have any suggestions, I’d love to hear them!

Use NMAP To Detect Conficker

I found this gem of an Nmap command yesterday. I was unable to write about this nifty command because my site was offline. But I’m back now!

Important Notes:

You will need to download the latest version of nmap from insecure.org, or you can click here

The command:

nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 [targetnetworks]

Just remove [targetnetworks] and replace that value with the subnet you wish to scan. Since my gateway is 192.168.1.1, I altered the command to scan my network to look like the following:

nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.1.*

Analyze the output:

A clean machine should report at the bottom: “Conficker: Likely CLEAN”, while likely infected machines say: “Conficker: Likely INFECTED”. For more advice, see this nmap-dev post by Brandon Enright.

Update/New Guide: Lava Lamp Housing

I finished up my hardware arduino monitoring project with a brand new Lava Lamp Housing. I’ve also update the script to check my gmail account and notify me when a new email hits my inbox.

Click Here for the full guide

Arduino Server/Service Monitor

I’ve successfully written a bash script that runs once every minute. The script detects whether or not my server is online by issuing a simple ping request. Based on results of the ping request(s), the arduino will display a green LED when the server is online or a red LED if the server is offline. I’ve also setup a cron job to execute the script once a minute, giving me up to the minute status of my server. This specific project is not terribly amazing, but the foundation for many more projects to come has laid.

Click Here for the full project page

Plesk Hack: Email and FTP Usernames and Passwords

I wrote this simple script for work. This script allows us to gather all the username and password information on the server to let us troubleshoot faster. This is an early version of the script, I plan on added more functionality to improve the speed of troubleshooting. This script was not intended for malicious purposes, please do not use it for such.

Edit: It looks like a few people out there have been publishing my code without attribution.  I really don’t mind if you post my code, but please give me credit.  The one I’ve found didn’t even change the header (with my full name in it) of the script or the “doneskies” at the end.  Have some class and give me proper attribution.

Click Here to see the script