Nagios Check Postgres Table Date Column Against now()

I had a situation where a daily sync of a table from one database to another was failing. This table was updated daily so the query should return something like this when it was synced correctly:

I use Nagios very heavily and I setup a custom plugin to check the query’s date against today’s date, this should warn or critical based on user supplied arguments. Here is what a failure looks like when running from the nagios servers command line. This worked well at alerting me when the sync failed, this was integrated into the nagios subsystem and emails and slack alerts are generated as expected.

NAGIOS AWS REDSHIFT TABLE COUNT PLUGIN PYTHON

I needed a quick plugin to warn me if one of our AWS REDSHIFT instances had a table count above 6000 and alert critical if above 7000. I decided to write a python plugin for nagios to do the chore. You can see the source code and the example of executing it below on the nagios host.

Python Backup WORDPRESS Site / DATABASE and HTML

I have this blog hosted on a LINODE dedicated LINUX server. It’s about 10 dollars a month for a 1 core system with about 250GB of disk space and 1GB of RAM, this server runs the common LAMP stack, I needed a quick and dirty script to backup MYSQL database and the PHP code contained in the /var/www/html folder. I wanted the script to compress the contents of both and move them into a directory with the correct date. See the comments below outlining the code and the action of running it.

So you can see we generated 2 files in a dated directory, I chose to use both zip and gunzip for compression algoritims. To view the contents you can run the normal linux commands to extract the files.

So there you have it, I can tar up the entire dated directory for easy offsite backup now of my entire site jasonralph.org. Hope this helps someone, feel free to copy the source code and change at will.

Best,
Jason

Python Mysql Connector

Thought I would try my hand at some SQL programming with Python, I was stuck using a Windows machine(BLAH) I wanted to setup a MySQL database and 1 table for testing. I am on a Windows machine so I installed WAMP which is a Windows Apache Mysql Php server. You can get the installer for Windows here:
http://www.wampserver.com/en/

You can get the python library / module here:

Mysql Python
Using PhpMyAdmin I setup a database and added the table.

View post on imgur.com

As you can see I created a function that added data into my new database. I pass it 4 parameters, id-name-dept-salary, when you execute this script the database gets populated with the correct data. Pretty cool!!

Here is how you can see the help and call the command properly:

View post on imgur.com

Here is what you can see when performing a select * from the table.

View post on imgur.com

Here is the awesome IDE pyCharm and the results from running the code.

View post on imgur.com

Here is an example of how to query that database from the table.

Here is the output of the fetch command using ID as a parameter:

View post on imgur.com


Took me a while to figure out the syntax, so hopefully this helps someone.
Jason

PYTHON – Script to download youtube videos for offline viewing

I was interested in viewing this video of a news conference (USENIX 2016) on my trip home on Metro North Train, NYC => CT. The trip is about an hour an 10 minutes from Manhattan’s Grand Central Terminal to Milford CT, express train that is. My concern was that I would have choppy internet service on the way since I recently updated my laptop and the built in Verizon Mobile card was not activated yet. I would need to use my ATT iPhone as a hotspot, which proved to be very shakey at times. A colleague of mine recommended a website for making youtube videos available for offline viewing. The name of this site was:

http://www.keepvid.com

Right off the rip I was concerned that this site was infested with malware and any other bullshit associated with a free video ripping service. I used the site and was able to create a download of the video I was interested in, however who knows how sick my Windows based machine just got. I could of contracted anything from this site.

I thought about this and said, there has to be a better way, or a python lib for this, and low and behold a search came up with PYTUBE:
https://github.com/nficano/pytube

This library had some interesting features and literally blew away the keepvid site in regards to flexibility. Here is some explaining of what this library can do. Please have a look at the examples below, I will do my best to narrate them.

Here I use PIP to install the PYTUBE lib, you can ignore the DEPRECATION: warning for my outdated python that blares at you for being such an idiot.

Next up you can see that I am setting a variable yt(this is the video you want to download). Using python’s Pretty Print Lib you can run the pprint(yt.get_videos() method to see what formats are available for download.

Please have a look at the comments in the code for a bit more details in regards to what is going on, in this example I am using the filename Pulp_Fiction.mp4 for my filename I want to be when downloaded.

Ok so here is what it looks like when you execute the program:

As you can see we have a new filename with the video we asked for to watch without a streaming internet connection, here is a ls to show:

As always, I am sure there are better ways to do this and I am sure there is cleaner code. Most of this code was taken right from the authors site who is a badass, here is his link:

https://github.com/nficano/pytube

Hope you liked,
J$0N

Daily Weather Email – PYTHON – CRON – API

I was interested in the weatherunderground API for getting real time weather updates via the API and python.
WeatherUnderGroundApiLink:
http://www.wunderground.com/weather/api/
I was particularly interested in learning how to use the JSON python module. So I thought I would give you people a quick and dirty write up of how I get a daily weather update with endless categories via email on linux using python.

Ok so here we go, don’t get all excited and post this on hacker news and crash my t1.micro at AWS.

Let’s have a lookie at the python script where the magic takes place. O Yeah you will need to get an API KEY from WeatherUnderground for this. Look here:
http://www.wunderground.com/weather/api/d/login.html

The API will look like this once you obtain your copy:

Here is the link for requests:
http://docs.python-requests.org/en/master/
Ok let me break down the PY code:

It’s probably important to see what we get back from the API in JSON so the below code makes sense. Here we go, this is just pretty printing the JSON using pythons PPRINT module, Showing this snippet first to help understand the code.

SCRIPT:

OUTPUT:

Ok let’s parse this JSON and send a freaking daily email with the fields we want, O Yeah.

Here is the script commenting on what we are doing.

Here is what comes out of this python script when we call the JSON variables we are attracted to:

Ok let’s wrap this biatch into a shell script and have it call mail on linux so I can get a daily updates on the weather for Milford CT whenever I call the cron.

Here is the directory structure I setup for the scripts:

Here is the bash script that I wrote to bring it all together, it calls the python script and writes a log and mails it.

Here is the cron:

Here is my morning email message:

View post on imgur.com

Hope you had fun, I did. O and let me know how bad this post is and how you can do it better.
Love you