Tag Archives: CLI

get_iplayer is command line program which is able to interface with the BBC’s iPlayer service, return a play list of ALL available content, and fetch any particular files/shows that are requested. its probably in your repo, if not head over to and grab it now!

This software is a celebration for all who believe in open source and freedom on the internet. However, sadly the BBC has closed the door on get_iplayer from streaming programs directly (without first downloading)… forcing people to install and use the ghastly flash player for direct streaming.

Invoke the program without arguments and get_iplayer will print a list of hundreds of available files.

$ get_iplayer

But it would be easier to read it if it was saved to a text file…

$ get_iplayer > ~/iplayer.txt

What about radio content?

$ get_iplayer --type radio > ~/iplayer_radio.txt

Look through the lists for what you want, and and then use the ‘–get’ option along with the program ID and your download will begin.

$ get_iplayer --get 12955

and yes, you can ask get_iplayer to download multiple files with one command, just seperate each shows ID with a space.

Ingeniously, get_iplayer tricks iPlayer into thinking an iPhone is making the request, and serves up the files right away. for this reason, the feeds arent exacly high definition, but still very watchable.


Slimrat is a fantastic tool that allows you to automate downloads from rapidshare and several other download services.

Debian users can download slimrat using apt using the familiar “sudo apt-get install slimrat”.

Simply invoke the program in a terminal with

$ slimrat downloadlink 

One nice feature is the ability to queue up as many downloads as you like in a text file, and then download all, in sequence, with the software successfully negotiating waiting times between downloads.

To download a whole list.txt of files use the ‘-l’ option:

$ slimrat -l list.txt

personally, i would not want to be without this one. absolutely fantastic command line app. However, if you are looking for GUI program of this nature – dont bother with GUI front ends for slimrat, get Tucan instead!

Rtorrent is by far my favourite command line app and absolute favourite bittorrent client. However, its not like transmission or utorrent, there is some manual configuration required to get it working how you want.

and for me, the most important thing is transfer speeds.

Its something i read on countless forums – “I down load a torrent with transmission, and i get full speed. I try the same torrent with rtorrent and its really slow, or wont even connect”

So you opened ports 6881-6889 on your router and still no joy?

I had this problem too, and it is easier than you might think to fix. The first place you need to look is:


If that file doesnt exist, you need to create it your self using a text editor – just paste the below text into it.

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. “0” for unlimited.
#download_rate = 0
#upload_rate = 0

# Default directory to save the downloaded torrents.
#directory = ./# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. “0” for unlimited.
#download_rate = 0
#upload_rate = 0

# Default directory to save the downloaded torrents.
#directory = ./

# Default session directory. Make sure you don’t run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#session = ./session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#schedule = watch_directory,5,5,load_start=./watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,”stop_on_ratio=200,200M,2000″

# The ip address reported to the tracker.
#ip =
#ip =

# The ip address the listening socket and outgoing connections is
# bound to.
#bind =
#bind =

# Port range to use for listening.
# port_range = 6881-6889

# Start opening ports at a random position within the port range.
#port_random = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no

# Set whetever the client should try to connect to UDP trackers.
#use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip’s.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
# encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to “disable” (completely disable DHT), “off” (do not start DHT),
# “auto” (start and stop DHT as needed), or “on” (start DHT immediately).
# The default is “off”. For DHT to work, a session directory must be defined.
# dht = auto

# UDP port to use for DHT.
# dht_port = 6881

# Enable peer exchange (for torrents not marked private)
# peer_exchange = yes

# Do not modify the following parameters unless you know what you’re doing.

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10

Thats just the default .rtorrent.rc, and nearly all options are commented out, so at the moment this RC does very little. Anyway, i’m not hear to explain the this whole thing, if thats what you need, i’ll point you back kmandla’s post.

The only thing we are going to change in this file is where it says

# Port range to use for listening.
# port_range = 6881-6889

All we are going to do is remove the ‘#’ from the port_range line, which will force rtorrent to use the ports we have specified. make sure ports you want to use are specified – if you are unsure, use the same as I have.

Ok, now save the file. The next time you run rtorrent wit will be using these ports only. thats the same as the ports you forwarded from your router yes? but you still have slow/no connections?

This is because of iptables – the firewall that comes built in to most linux distos. To look at your iptables output, type:

sudo iptables -L

It should look something like this:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

You’ll need to enter two commands to set iptables to allow the specified port range (port 6881-6889)


sudo iptables -A INPUT -p tcp --destination-port 6881:6889 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --source-port 6881:6889 -j ACCEPT

And thats it. To summarise, we:
– Ensured we had a working .rtorrent.rc file in the home directory
– Edited the .rtorrent.rc file to force rtorrent to use certain ports
– Set iptables to permit the specified port range

Here is a very quick guide on adding mouse support to the text terminal in linux (ubuntu). This is is very useful for text highlighting, copying/pasting but it really comes into its own when browsing the web on the command line with Links2, w3m or any other CLI browser.

The file that needs to be edited is called ’40-permissions.rules’ and you can open it by typing:

sudo leafpad /etc/udev/rules.d/40-permissions.rules

Again, if leafpad isnt your bag, feel free to use whatever editor you want.

Now scroll down to the bottom and add a line like this:

KERNEL=="mice",				MODE="0666"

If you already have KERNEL==”mice”, you can just amend it with MODE=”0666″
Save the file

And you’re done. that was easy wasn’t it? restart your machine, go to a tty window and wiggle your mouse!

This is SO cool, even if its usefulness is somewhat limited. VLC, and also Mplayer support video output in the form of ASCII characters which can be viewed through a terminal window, tty,or even a remote session via ssh.

The main use i can imagine for this is if you run a NAT/torrent workhorse without X server,you could ssh to it and actually check media files.

To activate in VLC, go to Tools>Preferences>Video and then select ASCII from the outputs drop down. Colour ASCII is also available.”

Often, when using linux, there are times when you need to re-use a long-winded command on a regular basis. Wouldnt it be nice if you could configure your system to carry out that command with just a simple keyword commmand?

Well luckily for us, we can. let me give you an example. The command i use if i want to watch a video within the framebuffer (ouside of X) is as follows:

sudo mplayer -vo fbdev -fs -vf scale=800:-3 /name/of/video.avi

There is no way i’m going to remember that everytime i come to watch a video… Now sure, i could save this into a txt file and grab it when i need it, or even write a script to handle it, but there is a more elegant way. Use an alias.

An alias is just like giving your own unique name to a command for simplicity. I want my alias to be ‘clivid’ so that i can type ‘clivid /path/to/video.avi’ and the computer will do – ‘sudo mplayer -vo fbdev -fs -vf scale=800:-3 /path/to/video.avi’

Heres what you do: open a terminal emu, type

sudo leafpad ~/.bashrc

Or whatever txt editor you use if you dont like leafpad.

You will be confronted with your .bashrc file. Scroll to the very bottom, this is where we will add the alias

First add a comment so you know what the alias does my case its:

#Alias for opening mplayer within framebuffer

Next is the line which actually adds the alias

alias clivid='sudo mplayer -vo fbdev -fs -vf scale=800:-3'

its that simple. You type alias nameOfAlias=’bashCommand’

Save the document, and you’re almost finished. You must recompile .bashrc, type:

source ~/.bashrc

Now test out your new alias on the command line – good luck!