Linux Blog

tweeting from the command line

Filed under: Shell Script Sundays — TheLinuxBlog.com at 12:25 pm on Sunday, June 29, 2008

This is a subject that has been covered time and time again but I don’t think that it will hurt one more time. Twitter is a very popular “Microblogging” site where you can constantly change your status to let those who “follow” you know what you are doing. Since I just signed up for twitter for The Linux Blog I figured I’d write this post on how I update my twitter feed. While I’m at it I might as well invite you over to my feed URL: http://twitter.com/linuxblog

So here is the script:

#!/bin/bash
echo "Enter Tweet: ";
read inputline; TWEET="$inputline";
curl -u user:password -s -F status="$inputline" http://twitter.com/statuses/update.xml http://twitter.com/account/end_session

This is a very basic twitter script, it does no error checking and probably doesn’t escape characters properly. None the less it works. The part that gets input from the shell is the following line:

read inputline; TWEET="$inputline";

If you’d like more information on how this works read this article: Shell Script to get user input

Curl is used to send the data to Twitter, to view curl tutorials and how-to’s visit the Curl Man Page which has a wealth of information at the bottom.

Until next time, happy tweeting!

Apache “Directory index forbidden by Options directive:”

Filed under: Quick Linux Tutorials — TheLinuxBlog.com at 9:29 pm on Friday, June 27, 2008

This is a common problem with the Apache web server. It is considered a security risk to show the directory contents by default. Especially those in the root directory. The way to fix this is pretty simple, you first need to make sure that there are no -Index directives in any of the configuration files. In your httpd configuration directory grep with a line number for Options like so:

grep -n Options *

If you don’t see any -Indexes then its possible there are included files. Check these directories if you know them, if you don’t grep your configuration file for the Includes:

grep -n Include *

If you’re still getting the test page or a permission denied error after removing the directive that disables Indexes then it may be a permissions issue. Apache needs +x access for all users to enable directory listings. Change the permissions and it should work.

On Fedora there is a file called welcome.conf in the conf.d directory. This can be removed and if you have Options All set, then you should be good to go. On other distributions like Slackware it is easier to accomplish. I wouldn’t recommend allowing any sort of directory listing in a production environment but in my development case, where I only allow access to my test server on a per host basis this is not a big problem.

Also, remember to restart the server after making changes.

Hope this helps, if it doesn’t be sure to drop a comment!

Bash Aliases

Filed under: General Linux,Linux Software,Quick Linux Tutorials — TheLinuxBlog.com at 12:23 pm on Wednesday, June 25, 2008

Have you ever wanted to make a command for something that did not exist? Perhaps modify the functionality of a particular application to something more suitable? I know I have. For example, and I know that there is probably a better way to do this, but on certain Linux machines (such as servers), I like to clear the output before exiting. While I can type the command:

 clear; exit

this still leaves me with a line at the top of the screen. Some distributions clear this automatically, for those that don’t an alias can be used.The basic principal for a bash alias is easy. You set an alias up and then use that alias instead of the command.
It appears that aliases have precedence over any already existing applications in the path so it becomes handy if you wish to override a command or perform a task before launching a built in command. I’m sure that this option can be changed if needed.

Now you know what aliases are here is how to use an alias to override the exit command in bash.

alias exit="clear; exit > /dev/null 2&> /dev/null"

Aliases with parameters can get tricky, the best workaround I have found is to write a shell script and put it in your local bin directory.

Some notes on DD-WRT

Filed under: General Linux,Linux Hardware,Linux Software — TheLinuxBlog.com at 1:44 am on Saturday, June 21, 2008

For those of you that don’t know DD-WRT is a modified version of firmware somewhat like that of the Linksys NSLU2 except more geared towards wireless routers, it runs on over 80 models.

I needed to finally set my home office / desk up with my home wireless network. I currently have a Belkin running DD-WRT and was very happy with the versatility. I have temporarily used it as a wireless bridge in other applications, so I thought I’d add another DD-WRT box to my network and use it as a bridge as I had previously done.

As noted above DD-WRT does support a large variety of wireless routers, the problem is finding a supported model. I purchased another cheap Belkin as it was on the known working hardware and came to realize that it was not possible to get DD-WRT set up on it. It was an version that was specifically put on the not supported list which I had failed to check.

A lot of Netgear routers are supported, but be careful. I noticed that the Model numbers do work, but the newer Netgear versions of the same model are not supported. I oped to buy a WRT54G for a modest $49.99. It has slightly less ram, and flash memory meaning that it can not support the full version but it has more then enough features in the micro version that it can run.

The Linksys WRT54GL retails about $65-$90 and can be purchased from most computer stores that have a decent selection. It features some pretty good specs, like the WRT54GS except it has more RAM and more flash. Again, this depends on the version you get. If you purchase the WRT54GL you are guaranteed to get a working version of DD-WRT on it though. It took me a while to find my WRT54G, I shopped at Best Buy, Circuit City, Office Max, Staples and they all had the “latest and greatest” models that are not yet supported by DD-WRT and were incredibly over priced. At one point I was very desperate and almost purchased an overpriced WAP54G which is the same thing without the built in switch. I am very happy that I didn’t as I would have also had to wire up my 16 port switch to a power supply since it went bad.

If your considering purchasing a router to run DD-WRT just check the black list first and take a print out of the supported and not supported lists from DD-WRT.com (The employees of big box retail stores don’t like it when you take every model they have to a computer with Internet and compare the models / versions one by one only to take them all back.)

Switch! The Linux Blog Dog

Filed under: The Linux Blog News — TheLinuxBlog.com at 10:57 am on Friday, June 20, 2008

So, after a long time with no posts I think I figured out why I haven’t been writing as much. You see, I recently got a dog, she is a 7 month old border collie – whippet mix. Her name is switch and she currently demands a lot of attention or she gets into mischief, but after a long walk she does a really wicked FireFox impression which makes up for it.

I’ll be writing as much as I can, but again if any one would like to write on this blog or is interested in guest blogging just let me know.

Below are some pictures of Switch! The Linux Blog Dog

Linux Blog Dog
Linux Blog Dog

iPhone SSH Client

Filed under: General Linux — TheLinuxBlog.com at 2:34 pm on Monday, June 9, 2008

For those of you that have been following me for a while may remember my post titled Phones Meet Linux on iPhone alternatives and how I probably would not buy an iPhone. Today the iPhone has another alternative: its self. Apple announced the release of a new version of the iPhone. I’m sure your all familiar with this by now since its been rumoured for months but now its been announced.

So, with the announced release of the iPhone I’m happy to see that developers can now develop and distribute applications for the iPhone. Now I’m wondering how long it will be before there is a SSH client in the application database for the iPhone. System monitoring applications would also interest me. Among this they have also dropped the price, it will only be a matter of time before they run out.

What does this mean for open source developers? I cannot say I know the answer to this question yet. Is Apple going to allow open source projects to be distributed through their network? Wouldn’t it be nice? Free applications for the iPhone that are better than paid versions would be killer. What are your thoughts on this?

Parse ifconfig data with shell scripts

Filed under: Shell Script Sundays — TheLinuxBlog.com at 2:25 pm on Sunday, June 8, 2008

This week in TheLinuxBlogs.com’s Shell Script Sundays article I’m going to show you how you can use basic UNIX commands to parse networking data. As always there are a number of different methods of achieving this, and I am in no way saying that this is absolutely the way you must do it, or the best way. Its just an example of how you can use shell scripts to your advantage.

Firstly most know that Linux uses the ifconfig command to get information about networking interfaces. If you issue the ifconfig followed by the interface name you get information just about that interface as follows:

# /sbin/ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:0E:35:7F:E2:98 inet addr:192.168.2.13 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::20e:35ff:fe7f:e298/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1146 errors:0 dropped:39 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:23748601 (22.6 MiB) TX bytes:507899 (495.9 KiB) Interrupt:11 Base address:0x4000 Memory:fceff000-fcefffff

This information is not in the best format to parse (it has also been distorted by my blogging software.) To solve this problem we are going to search for the whitespaces at the beginning of each line and replaces them with commas. By doing this:

# /sbin/ifconfig eth1 | sed 's/          /,/'
eth1 Link encap:Ethernet HWaddr 00:0E:35:7F:E2:98 ,inet addr:192.168.2.13 Bcast:192.168.2.255 Mask:255.255.255.0 ,inet6 addr: fe80::20e:35ff:fe7f:e298/64 Scope:Link ,UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ,RX packets:1344 errors:0 dropped:39 overruns:0 frame:0 ,TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 ,collisions:0 txqueuelen:1000 ,RX bytes:23809630 (22.7 MiB) TX bytes:507899 (495.9 KiB) ,Interrupt:11 Base address:0x4000 Memory:fceff000-fcefffff

That gives us a nice comma after every line. In order to grab fields from this line the tr command can be used to replace spaces with pipes.

#/sbin/ifconfig eth1 | sed ‘s/ /,/’ | tr [:space:] \|
eth1||||||Link|encap:Ethernet||HWaddr|00:0E:35:7F:E2:98|||,inet|addr:192.168.2.13||Bcast:192.168.2.255||Mask:255.255.255.0|,inet6|addr:|fe80::20e:35ff:fe7f:e298/64|Scope:Link|,UP|BROADCAST|RUNNING|MULTICAST||MTU:1500||Metric:1|,RX|packets:1765|errors:0|dropped:39|overruns:0|frame:0|,TX|packets:1|errors:0|dropped:0|overruns:0|carrier:0|,collisions:0|txqueuelen:1000||,RX|bytes:23941275|(22.8|MiB)||TX|bytes:507899|(495.9|KiB)|,Interrupt:11|Base|address:0x4000|Memory:fceff000-fcefffff|||

Now that the fields are all delimited properly, lets use the cut command to grab a line from this. Since I am interested in the RX and TX bytes I’m going to grab data from line 8 by using the cut command as follows:

#/sbin/ifconfig eth1 | sed 's/          /,/' | tr [:space:] \| | cut -d , -f 8
RX|bytes:24014818|(22.9|MiB)||TX|bytes:507899|(495.9|KiB)|

That gave us a nice line of output which is easy to parse even further by using the cut command. You will notice the fields are delimited by a pipe (the | character) and are not always consistent since we replaced all spaces with a pipe. Take a look at the first two fields RX|bytes: This means that to get the RX bytes in bytes we need to cut yet again. Since I’m not to bothered about Bytes and the largest number is delimeted in fields 3 and 4 I will concentrate on those.

#/sbin/ifconfig eth1 | sed 's/          /,/' | tr [:space:] \| | cut -d , -f 8 | cut -d \| -f 3-4
(23.0|MiB)

This is a nice RX MiB output yet it has one last problem, the pipe between the characters. Sed can be used to replace this and any other characters if you wish. Just issue a sed find and replace like this:

#/sbin/ifconfig eth1 | sed 's/          /,/' | tr [:space:] \| | cut -d , -f 8 | cut -d \| -f 3-4 | sed 's/|/ /'
(23.0 MiB)

That looks good for now. If you would like more information on how to parse data regarding this post or any other you can always leave me a comment and I’ll try my best to help. Especially if we can post the results on TheLinuxBlog in another Shell Script Sundays Article. Thanks for reading The Linux Blog and come back soon!

Eclipse – Around the World

Filed under: General Linux,Linux Software — TheLinuxBlog.com at 2:46 pm on Friday, June 6, 2008

Ganymede is coming! I’ve been using Eclipse for a little while now and would like to pass on some information about the Ganymede release.
In the past I have became accustomed to commercial IDE’s, what is bad about this is when a new release comes out often I’d have to either upgrade or be stuck with an old version. Eclipse gives me a standard development environment that works on multiple computer platforms. Through plug-ins often the exact same, or better functionality is added. What is great about Eclipse Ganymede is that it lets you get a preview of what the next generation of the IDE will look like. Eclipse Ganymede is not for every one, after all it is for testers and early adopters. Personally I like to download the Ganymede release every once in a while and test it out. After all some of the big players in the development industry sponsor or contribute to a number of projects that are based on eclipse and its nice to see what they are up to. Check out Ganymede Eclipse for yourself!

Sorting lists with Sort

Filed under: Quick Linux Tutorials — TheLinuxBlog.com at 11:11 pm on Wednesday, June 4, 2008

There comes a time when it is useful to know how to sort lists. Thankfully using open source software sorting text files can be very easy.

This example shows how to sort a file alphabetically using the sort command. I assume that you have a text file in mind so I will skip the creation of that. There are two ways to sort the file with the sort command. The first being the preferred method but not always suitable.

sort [textfile]
 
cat [textfile] | sort

That’s it! The second method can be useful if you would like to do any thing special, for example searching with grep, using cut or sed for data extraction or just out of convenience. Check out the man page for sort for more information on all of the options!

My Problems with Fedora 9

Filed under: General Linux,Linux Software — TheLinuxBlog.com at 10:29 pm on Tuesday, June 3, 2008

Now, I know that Fedora is a community based operating system that Redhat just so happens to sponsor but I think there are some major problems with the release. Although I have been called “Bleeding Edge” I don’t think that I am quite there and actually I think I’m far from “Cutting Edge.”
I downloaded Fedora 9 on the day of its release to check it out. I started off by installing it onto a virtual machine. First time around the install failed for no reason, some Python error that I did not feel like debugging. I rebooted the VM , gave it another shot and it worked. The install process was pretty much the same as Fedora 8. I saw some minor differences but nothing that I can remember now. Once installed I fired it up and to say the least performance was not very good. I wanted to check out the KDE4, so I switched over. Nothing, the graphics support for the VMWare Toolbox driver is not good enough to really play with KDE4.

After toying with the Virtual Machine I decided to upgrade a test virtual machine from Fedora 8 to Fedora 9. The process to my surprise went smoothly. This was a vanilla Fedora 8 install with not too many bells and whistles. I administer a number of Fedora boxes and thought that I’d upgrade one that actually had software installed. The upgrade did not work, it failed and gave me an obnoxious error which had nothing to do with the task at hand. When I figure out exactly what the cause of the problem was, or if it is just a hardware issue I’ll report my findings here.

Despite feeling like I had not achieved too much I burned a copy of the DVD and installed it on my Desktop at the office. Its not the fastest machine on the planet but its no creeper. 1GB Ram, NVIDIA graphics and I think the upwards of 2GHz. The install went fine and gnome works great. I did not opt to install my window manager of choice (XFCE) since I was really wanting to play with KDE4. KDE4 installed fine and after switching desktops KDE worked. What’s the first thing I tried? You probably guessed it the Desktop effects. So, I try to enable them. No dice. So “I’ll just install the graphics card driver”
I thought since I know that it didn’t come bundled. This is where my troubles really began. The NVIDIA graphics will not compile on Fedora 9. Fedora 9 uses a version of XORG that has been stable for a while but NVIDIA has decided not to support yet. Thats exactly what you get when a vendor has control over source. Oh well.

I put up with the laggy graphics for a little while and tried to customize KDE. KDE4 to me seemed awfully buggy to be included as the only option for running KDE as a desktop. I happen to use KDE when not using XFCE and am quite happy with the 3.5 tree. My next problem apart was with Firefox. They include Firefox Beta 3, which I am undecided on. It crashed a number of times on me whist browsing since I hadn’t set anything up to do any real work on. I know that we would have to wait for Fedora 10 come out to see KDE4 and Firefox 3 if they were not included now but I didn’t see the legacy versions on the installer. For me Fedora 9 is not quite ready to use in a production environment.

For now I’m going to stick to Fedora 8 whilst providing feedback for 9. The moment that KDE, Firefox and XORG get patched I’m 100% there.

Fedora is not for every one but has any one else had any problems with Fedora 9 or interesting stories to share?

Tar Archive Mischief.

Filed under: Shell Script Sundays — TheLinuxBlog.com at 1:22 am on Sunday, June 1, 2008

I ran into a problem the other day when I downloaded a particular tar.gz archive (Simple Machine Forums to be specific.) The problem was that despite how good SMF might be the developers did not put the files in a folder before they tar.gz’d it. This is not the only time I have ran into this problem, a lot of developers actually do it. Over time its become a habit to assume that its in a folder.

Here’s a solution to delete all files that were extracted from an archive:

tar xvzf [filename] > [filename]-filelist.txt
cat filelist.txt | while read i; do rm $i; done;

If you want to, you can do a dry run of the script by putting an echo in front of the rm statement and looking at the output. All files that you had e.g index.php will have most likely been overwritten from the extract in the first place so, it doesn’t hurt to delete them.

Once you have deleted all of the files from the archive you can simply create a directory and use the following to extract to it:

tar xvzf  [filename] -C [yourdir]