Category Archives: How-to’s

Tutorials and step-by-step instructions.

SSH Tunneling on Windows Using PuTTY

Imagine if you will; you are at work or school and you need to access a site, but its blocked. So being the tech savvy person you are you try a proxy tunnel and that too is blocked.  What do you do?

You create an SSH tunnel proxy on your own machine!

First off, in order to do any of this regardless of your Operating System you need:

  1. an SSH Server
  2. a knowledge of how to configure your computer / browser to use the proxy
  3. some knowledge of writing scripts (optional if you want to run stuff when you startup your computer)

 

Now, if you are on linux or mac it is simple as opening the terminal and running:

Then just point your browser or computer system network settings over to 127.0.0.1 port 55555 it will look like this (on firefox):

2013-05-16 15_25_03-Connection Settings

However, if you are an unfortunate Windows OS user, your situation isn’t as easy. Sure, you could install Cygwin to get ssh on windows; but that just takes a lot of time and configuring and who has the patience for that?! So instead you use the easiest SSH tool for windows: PuTTY.

PuTTY is a simple executable file that lets you connect to ssh servers easily and effectively. It also allows you to store “Sessions” with special settings for the servers you connect to, but all that can be looked at on your own; now back to the topic at hand.

In order to make connecting to your server as simple as possible I created a script that can be ran. You can even edit this script to include some other programs you want to “auto-launch” once you have the proxy up and running.

(take care to replace all the necessary variables in the objShell.Run command i.e. Paths, Passwords, Users, etc.)

now copy this code and paste it into a file and name the file WhateverNameYouWant.vbs (the .vbs portion is crucial as it is how the script will be able to execute). Execute the script and then you’re almost done. All that is left is to configure whatever program (as long as it supports a SOCKS5 proxy) to use the proxy.  Again to do it on firefox:

2013-05-16 15_25_03-Connection Settings

Make sure to leave PuTTY up and running, if you close it out it causes your proxy to shutdown as well.

NOTE: configuring your browser to use the proxy in the way shown above will cause all your traffic all the time to be sent through the proxy.  If you want a way to toggle between proxy and no proxy install an addon onto the browser (I recommend FoxyProxy, it’s compatible with both Firefox and Chrome).

 

I hope you have enjoyed this little tutorial and if you have any questions leave a comment down below.

Sample debug output code for BASH/SHELL

When trying to debug your own scripts it can be difficult to see exactly what you want.  Pages of white text scrolling across the screen.  Here is a quick flexible function that can make life a whole lot easier by setting different debug values and instead of using echo, use the function name.

Copy this into a basic script and run it, adjust the debuglevel variable at the top to see different output.  I know this will help me in the future and hope it will help others as well.

Safely Removing Gnome-Keyring From Xubuntu 12.04

EDIT: Your results may vary, I am getting some feedback about this solution indicating which it may not be entirely effective, or may not work any more.

In previous Linux deployments, we have had problems with people’s keyring passwords being forgotten or not working, to the point where the universal response if you ask anyone what to do when the Gnome Keyring prompt comes up, it’s “oh, just hit cancel”.

In the latest image, we have decided to remove gnome-keyring.  You would think you would be able to do this very easily.

sudo apt-get remove gnome-keyring

But in reality, this command is dangerous, and threatens to remove xubuntu-desktop.

So, I did a bit of Googling, and I found this thread on Ask Ubuntu. They suggested installing aptitude and using aptitude to remove gnome-keyring, because they believe aptitude’s dependency tree is different.  However, this solution does not seem to work.

After doing some of my own digging, I found that under “Session and Startup” settings, there is an option called “Launch GNOME services on startup” listed under Compatibility.

GNOME Compatibility XFCE

Mousing over this option shows that disabling it will prevent Gnome Keyring from launching.  This will do away with our Gnome Keyring for good!

User Tracking and Logon Agents

We believe that tracking when users log into a computer is very good information.  We can easily look up where students log in, track computer usage, aid with helpdesk tasks, etc.  Our primary focus was to show that computer labs and carts are being used, and justify the 1:1 initiative we set forth.

This is was not a difficult task to setup but could be useful to others, so here it is!

First we need a good way to get data from the clients.  With Linux, we could do it a multitude of ways, with windows, it can be a bit limited.  We chose to do our data submission with a simple URL get.  Simple, easy, fast, reliable.  With some reading, it wasn’t too difficult to setup with Windows.

First… Server recording
We need a simple script to take variables and insert them into mysql with the needed information. Really all we need is the computer name and username.  We can use the server time and get the client’s IP from the server so that we know it is consistent.  Here is the server script:

MySQL Database Structure
Using the server side script we can see who the IP was of the user submitting the record, time stamp that event, see who the user is, and what the hostname of the computer is.
loa

Linux Logon Agent
The Linux logon agent could be written many different ways using several programs; curl, wget, lynx, etc.  Simply put it needs to pull two variables and curl that URL…  This needs to be put in the users (and/or skel’s) startup so that it runs at logon   This could be done in a single command like:

Windows Logon Agent
Unfortunately windows does not have awesome tools like wget, curl, lynx, etc so it is a bit more in-depth to get it working.  However it is easier to deploy using group policy on the server, you can deploy this script pretty easily. Put this script in the User Logon scripts:

Searching For Data!
This is a simple search web tool we created to locate user/computer/IP history.

Its complimentary style.css:

Custom Reports…
Once you have this information you should be able to run reports however you see fit.  We have created a highly custom report for our use which is specific to our school that shows computer usage.  That code is not ready to be posted at this time however here is a glimpse of what could be done.  Please note that ltcart1,2204, and 2506 have been physically relocated to other rooms but because database entries exists, they show up as 0.
report

With this report we can see that with 30 calendar days, there have been 22 instructional days.  This shows that these rooms are using computers almost every day!

 

Receiving RSS Updates Via Email

Rss_Shiny_Icon.svg

If you’re like me, you rely on your email for everything in your life.  My email delivers my latest Facebook notifications, Nagios warnings, text messages (thanks to Google Voice), and oh I guess email too.

I have push email notifications on my mobile devices, as do a lot of people.

Some websites offer RSS feeds of information which is important to you, but don’t offer an option to receive an email.

Yes, you could set this up for any RSS feed, but this quick guide will focus on setting up email notifications for Reddit comment responses and Reddit messages.

Another interesting application for this might be to receive emails when your favorite Podcasts are updated, or if you want to get an email when your favorite blog posts a new update.

Reddit is a very real-time social website, and having instant notifications of events on Reddit could be very useful, however since Reddit doesn’t even require an email address to register, they’re not offering the functionality.

 

What You’ll Need:

  • An RSS feed to subscribe to.
  • An email address to send the notifications to.
  • A Linux server which is always online, which you can create cron jobs on.

 

Let’s Begin
This is the only part of this guide which requires root access to the server.  We will be using RSS2Email, which is a free program available for Linux.  If you are using Ubuntu, it is right in the repositories for you.

If you do not have root access to your server, but you do have SSH access, it may still be possible to use this program if you compile it yourself.  You can get the source code here.

 

Setting Up RSS2Email
The setup is mind-numbingly easy!  If your email address is you@example.com, and your RSS feed link is http://www.reddit.com/message/inbox/.rss?feed=123foo456bar789&user=MyAwesomeUsername, you could use this syntax to set up your feed.

Important: Reddit RSS feeds for your Inbox, etc, have an ampersand (&) before your username.  If you do not escape this ampersand by putting a slash in front of it (\&) your feed will not work!

On The First Run, you may receive a high volume of email.  In fact, it was enough to cause my sendmail server to exceed its rate limit and throw a ton of email to the deferred queue.  But, it did eventually all send.  A lot of the first emails will be old RSS data you have already seen before.  After that, on subsequent runs, you will only receive updates.

 

Where Can I Find My Reddit Inbox Feed Link?
If you login to Reddit, and go to Preferences, you’ll find an “RSS Feeds” on the top of the page.  The direct link is https://ssl.reddit.com/prefs/feeds/.

 

Using RSS2Email
You can very easily add and delete feeds from your R2E configuration.

Add new feeds the same way you added the first one:  r2e add http://www.feedwebsite.com/feed

Delete old feeds by running r2e list, then r2e delete # where # is the number corresponding to the feed you want to delete.

 

Scheduling RSS2Email
Obviously, you will only receive updates when r2e is run manually.  So, an easy way to receive routine updates is to cron the command.

To receive updates every 10 minutes, add a line like this to your crontab.

To receive updates every 1 minute, add a line like this to your crontab.

 

You’re Done!
You should now receive emails at your designated time intervals when the RSS feed has new updates!