Thread: [Linuxcommand-announce] [LinuxCommand.org: Tips, News And Rants] Project: Building An All-Text Linu
Brought to you by:
bshotts
From: William S. <bs...@pa...> - 2009-02-25 23:33:30
|
When I see an old PC in the trash, I have a strong urge to rescue and adopt it like a stray puppy. My wife, of course, has very effective ways of constraining my behavior in this regard, so I don't have nearly as many computers as I want. I hate seeing computers go to waste. I figure if the processor and the power supply are still working, the computer should be doing something. So what if it can't run the latest version of Windows? It can still run Linux!Over the next few weeks, I will show you how to take an old, slow computer and make it into a text-only Linux workstation with surprising capabilities, including document production, email, instant messaging, audio playback, USENET news, calendaring, and, yes, even web browsing.Why would anyone want to build a text-only workstation? I don't know. Because we can! And besides, it's a great way to learn a bunch of command line stuff and that's why you're here, right?So if you want to play along, find yourself a computer with a least the following: - Pentium processor or above - 64 MB or more of RAM - 2 GB or larger hard disk - PS/2 or USB mouse - A PCI Network card (no ISA or wireless please)We're going to format over the existing software so don't use a valuable machine for this project. Many machines from the Windows 98 era should be good candidates. I will be using an HP Pavilion (circa 1996) with a 600 MHz Celeron, 320 MB of RAM and a 20 GB disk.Good luck and I will see you again soon! -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/25/2009 05:11:00 PM |
From: William S. <bs...@pa...> - 2009-02-27 22:30:26
|
-- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/27/2009 05:30:00 PM |
From: William S. <bs...@pa...> - 2009-02-28 00:51:22
|
In this episode, we will choose the Linux distribution and perform the installation.Choosing A DistributionAfter some consideration, I selected Debian 5.0 for our workstation project for three reasons: - Debian is fairly simple on a conceptional level. Good, straightforward design with good documentation. It's also capable of being installed on very small machines. Its minimum memory requirement is only 44 MB. - Its package repository is huge. With over 22,000 packages, we are likely to find a good selection of text based applications for our project. - It just came out and I wanted to play with it ;-)Creating Installation MediaWith that decision out of the way, we next decide on the installation media. I chose the "netinst" (also called the "minimal CD") option. This is a downloadable CD image that contains a minimal base system. Additional packages are installed from the Internet. The install image is 150 MB, much smaller than the full install CDs. To use this option you must have a working network connection. If you need other installation options, take a look at the Debian Installation Guide for guidance.You can download the installation image from here.The last step is creating the installation CD. I will assume that your present system, Linux or otherwise is capable of that and that you know how to do it.InstallationWith our machine ready, it's time to boot up with our install CD. After the CD boots you will receive an attractive Debian splash screen listing various install options. For our purposes, select "Install", not "Graphical Install".The installer is pretty easy to use and in most cases the default selections are fine. The arrow keys move from selection to selection as do the tab/shift-tab keys. The space bar is used to toggle the contents of check boxes. - When the prompt appears for disk partitioning, select "Guided - Use entire disk" and "All files in one partition". - At the "Set up users and passwords" screen, you will be prompted to set the password for the root account. If you have been using Ubuntu up to this point, I have to explain that Debian, like most Linux distributions has a discreet root account rather than using sudo for everything as Ubuntu does. Much of the early work we will perform on the system will require root access. Choose a root password that is both strong, and one that you can easily remember. - Next, you will be prompted to create your personal account. In keeping with LinuxCommand tradition, I named my machine "Linuxbox" and created a user account named "me". You, of course, can use any name you like. - At the "Select and install software" screen you will be presented with a group of check boxes for different sets of packages to install. Using the space bar, select the "Print server" group and unselect the "Desktop environment" group. - If you have installed the system using the entire disk as suggested above, answer "yes" to the prompt on the "Install the GRUB boot loader on the hard disk" screen to install GRUB in the disk's master boot record (MBR).The install should complete and prompt you to remove the install CD. Next, the machine will reboot and we should see the fruits of our labors.A lot of boot messages should scroll by after the reboot and you will see at the very bottom a login prompt like this:Debian GNU/Linux 5.0 linuxbox tty1linuxbox login:Enter the name root and then the root password and we will see a prompt like this:linuxbox: ~#Enter the command shutdown -h now and the machine will shutdown.We're done for today. -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/27/2009 05:32:00 PM |
From: William S. <bs...@pa...> - 2009-03-04 20:53:08
|
In this installment we'll learn how to navigate the text environment and install our first packages.If you have gotten through parts 1 and 2 of our series, you now have a sparkling new Linux system that displays -- a prompt! But if you think it only displays one prompt, you'd be wrong, as we shall soon see.Let's fire up our system and log in again as the root user.One of the commands I often use is locate, which rapidly searches a small database of files installed on the system. locate is installed on our system but when we try to use it we get the following message:linuxbox:~# locate foolocate: can not open `/var/lib/mlocate/mlocate.db': No such file or directoryThis message appears when you try to use the locate command before the database is created. Normally the database is rebuilt each night by a cron job, but unless you let the machine run overnight, the database will never get built. We'll fix this problem in a little bit, but to solve the problem in the meantime, we'll run the database update program manually:linuxbox:~# updatedbAfter it completes, locate should start to work. If you are unfamiliar with this wonderful utility, now is a good time to look at its man page.If we enter the command:linuxbox:~# locate fooWe will get back a long list of filenames containing the string "foo." Go ahead and do this. Notice how the list scrolls off the top of the screen. Next, type shift-PageUp and notice how we are able to scroll up the list. Shift-PageDown scrolls downward.The terminal screen is only 80 characters wide but sometimes a command will output lines wider than 80 characters. This will usually cause the text to wrap but in some rare instances it will actually go off the edge of the screen. In these cases, you can scroll the screen sideways by using the shift-right arrow and shift-left arrow.To see the next keyboard trick, type Alt-F2 and you will see a new login prompt. Actually you are seeing another virtual terminal you can log into. Go ahead and log in using your ordinary user name and password. Now try the who command:me@linuxbox ~$ whoroot tty1 2009-03-04 13:49me tty2 2009-03-04 14:28As we can see, we have two users logged in. Type Alt-F3 and we'll see another virtual terminal. In fact, on our system, Alt-F1 through F6 provide separate terminals we can use. You can use Alt-right and left arrows to rapidly cycle through them.Wouldn't It Be Great If The Mouse Worked?Let's go back to the first terminal session where root is logged in by typing Alt-F1. Then start up the aptitude program:linuxbox:~# aptitudeaptitude is a fancy character based way to install packages on Debian and other Debian-based distributions. It has many features and is a handy way to manage packages on our system. The apt-get program is also available. aptitude features a multi-pane screen:It took me a few minutes to figure out the user interface, but after installing a few packages with it, I figured it out. We're going to use aptitude to install a couple of packages. We'll use its search feature to help us out. Type / and a search prompt should appear. Enter "anacron" and it should find the package in its database.You can use the tab key to toggle between the two display panes. With the package name highlighted, press the + key to mark the package for installation. Next, let's do another search, this time for "gpm". If it does not find it the first time, type "n" to search for the next occurrence. Repeat until it finds a package named simply gpm. This use of / (search) and n (next) is the same as the less program. Again, type + to mark the package for installation.With our two packages selected, it's time to install them. We do this by typing "g" (for "go".) aptitude will display a summary of the actions it is about to take and by pressing "g" a second time, the installation will commence. When installing gpm for the first you will see an error message about being unable to shut down the daemon. This may be safely ignored.When the aptitude screen returns, type "q" to quit.We have now installed anacron, which will make sure that periodic tasks (like running updatedb) take place even if the machine is not run continuously. We also installed gpm which should make the mouse work. Some of the programs that we will install in upcoming installments can use a mouse, but its most useful feature is that we can now use the mouse to copy and paste text, just like we can on the X display. The only difference is that the right button is used to paste rather than the middle button.You can terminate your extra terminal sessions by typing "exit" and root can shut down the machine by:linuxbox:~# shutdown -h nowThat's all for today. See you again soon! -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/04/2009 01:23:00 PM |
From: William S. <bs...@pa...> - 2009-03-12 14:39:51
|
In this installment, we will explore web browsing and install a couple of packages to help with file management.A Text Web Browser?Yes, there are such things. In fact there are several available for Linux. Our Debian workstation has one installed by default. Called w3m, it is a full featured browser that operates in text mode. So what can you do with it? Well, we won't be watching YouTube with it, that's for sure, but many well written web sites (especially those designed to follow acceptable standards of accessibility) will render just fine. We can try it out:me@linuxbox:~$ w3m linuxcommand.organd after a few seconds we will see this:The arrow keys will navigate, and the tab key will advance from link to link. Shift-h will bring up the help screens and shift-b will perform a "back" function (this will get you out of help too). Press the q key to quit w3m. The program can do tabbed browsing, render tables and has a number of command line tricks. This blog renders fine too, so you can now follow along directly on our all-text system.Unfortunately, there is a bug that prevents w3m from using the mouse on the console to help with navigation. Fortunately, there are other browsers that you can install. See the link at the end of this article.Automatically Mounting USB DevicesIf we insert a USB flash drive into our system, we will see a kernel message appear on the screen. This is because the kernel sends its messages to the console in the hopes that an ever-vigilant operator (that's you) is paying attention. However this message means very little as it only announces the fact that the kernel has detected a device attached to the USP port. It does not mean that the system has done anything useful, like mounting the device. We could manually mount the device, that that is a nuisance.To solve this problem we will install a package called usbmount that can automatically mount USB devices. We can do this using aptitude. Just search for the "usbmount" package and install it. We described the process in installment 3.After the package is installed, we must modify its configuration file to allow support for VFAT file systems, the type most often used on USB drives. As a precaution, usbmount does not enable VFAT since the kernel does not fully support the "sync" mount option on VFAT file systems. Normally, usbmount allows USB devices to removed without unmounting. It does this by keeping file systems "synchronized," that is, it immediately writes changes to the device versus waiting to consolidate multiple write for improved performance. With VFAT enabled, the user must issue a sync command before removing a USB VFAT device.After the package is installed, we need to (as root) edit the /etc/usbmount/usbmount.conf file and change the following two lines:FILESYSTEMS="ext2 ext3"to:FILESYSTEMS="ext2 ext3 vfat"and:FS_MOUNTOPTIONS=""to:FS_MOUNTOPTIONS="-fstype=vfat,gid=floppy,dmask=0007,fmask=0117"After the configuration file is modified, usbmount will automatically mount VFAT devices. You will find the mount point in the /media directory. When a flash drive is inserted we can verify the mount using df:me@linuxbox:~$ dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/hda1 18856292 980140 16918280 6% /tmpfs 160096 0 160096 0% /lib/init/rwudev 10240 88 10152 1% /devtmpfs 160096 0 160096 0% /dev/shm/dev/sda1 15560 5944 9616 39% /media/usb0and we see that the drive has been mounted on /media/usb0. Just remember to use the sync command before removing the device, or really bad things may happen to the drive:me@linuxbox:~$ syncMidnight CommanderThe last package we will install in this episode is Midnight Commander, a text based file manager. Using aptitude, install the mc package and the following additional packages that are recommended: arj, bzip2, odt2txt, unzip, and zip. If you prefer, you can use apt-get to install the packages as the mc package is a little hard to find using aptitude:linuxbox:~# apt-get install mc arj bzip2 odt2txt unzip zipAfter mc is installed we can fire it up:me@linuxbox:~$ mcand the following screen will appear:The numbered blocks along the bottom of the screen correspond to the function keys, F1-F10 and permit access to many of the programs functions and it has a lot of them! Unlike w3m, the mouse is well supported by mc.That's all for this installment. While you're waiting for Part 5, study Midnight Commander. It has a help function and a man page. That should keep you busy for a while! Also, if you are interested in other text-based web browsers, check out the Text Mode Browser Roundup from Linux Journal. -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/11/2009 05:37:00 PM |
From: William S. <bs...@pa...> - 2009-03-21 11:25:08
|
In today's episode, we'll look at sudo and some text editing stuff. So fire up your text boxes and let's get going!sudoIf you're an Ubuntu user, you probably already know a little about sudo. It's the command you use to get temporary administrative privileges for doing such things as editing configuration files and installing software. sudo allows users to enter their own password instead of the root password to perform privileged tasks. Further, sudo can be configured to allow specific users specific privileges. For example, a user can be allowed to only execute a specific command as the superuser.sudo is invoked this way:sudo commandwhere command is the command to be executed with escalated privileges.One of the inconveniences on our all-text system is that we must either login as root or use the su command to shut the system down, since only the superuser is allowed to shutdown the system. A sensible precaution considering that Linux systems are designed to support multiple users at the same time.To fix this problem, we'll install sudo on our system. We can do this with either aptitude or apt-get. As root, enter the following command:apt-get install sudoand the sudo package will be installed.sudo is controlled by a configuration file named /etc/sudoers. The sudoers file is a little unique in that it wants to be edited only with the visudo program. You can actually edit it with any text editor, but the visudo program checks the syntax of the file to help prevent errors. This is important for any file with the security implications of sudoers.To edit the file, we simply (as root again) enter the command:visudoand the following screen will appear:Despite the name, the visudo program uses the nano text editor and not vi. This makes it much easier for new users. Our change to the sudoers file is very simple. Add this line in the section labled "User privilege specification" and then save the file and exit the editor by first typing ctrl-o and then ctrl-x.:me ALL=(ALL) ALLSubstitute your user name for the name "me" and this configuration will allow you to execute any command with root privileges by entering your own password.To allow a user of the system to only run the poweroff command (performs the same as shutdown but does not require the time to be specified), we could add this line to the file:username ALL=(ALL) /sbin/poweroffwhere username is the name of the user.nanoAs we have seen, our Debian system has the nano text editor installed by default. nano is a clone of an earlier editor named pico that is included with the pine email program. pine has some license issues that prevents it from being included with some Linux distributions so a replacement version of its editor was developed.To use nano, type the following:nano textfilewhere textfile is the name of a file to edit.As text-based editors go, it's pretty easy to use. It provides a small list of commands at the bottom of the screen. Pressing the ctrl-g key brings up the help screen which displays all of its commands. nano does support the mouse. See the nano man page for details.nano uses a global configuration file named /etc/nanorc and, if available, a local configuration file named ~/.nanorc. To make an initial copy of the local configuration file, copy the global file to your home directory:me@linuxbox:~$ cp /etc/nanorc ~/.nanorcOne useful change we can make to the configuration file is the activation of syntax highlighting. This can be done by removing comments from several lines at the end of the file. The last section of the configuration file, the "Color setup" section, has a number of "include" statements which load syntax definitions. To enable syntax highlighting support, remove the comment symbol from the beginning of the line. Change lines like this:## Bourne shell scripts#include "/usr/share/nano/sh.nanorc"to:## Bourne shell scriptsinclude "/usr/share/nano/sh.nanorc"for as many languages as you wish to support.Syntax highlighting is automatically activated based on the file name extension of the file being edited. For example, if we edit a file named foo.html and the HTML syntax definition has been included in the .nanorc file, the foo.html file will be displayed with syntax highlighting when loaded. The colors can be toggled on and off by pressing alt-y. This presents a problem for shell scripts, however as most do not have a file extension in their name. This can be solved in one of two ways. First, add the extension ".sh" to the file name, or second, invoke nano with the -Y sh option, which forces the selection of the sh highlighting. It might be a good idea to add an alias such as:alias nano-sh='nano -Y sh'to your .bashrc file to make this more convenient.vimReal Linux users, of course, don't use nano. They use vim, the enhanced replacement for the traditional Unix editor, vi. The version of vim installed by default on our system is called vim-tiny, a subset of the full package. I recommend installing the full vim package. This can be done with apt-get like so:apt-get install vimI'm not going to cover vim in this posting as it would take too much space (it consumed a rather chapter in my upcoming book) but there is a pretty good on-line book (in PDF format) that describes it in detail. See The Vim Book. Seriously, to be a real Linux person you should take the time to learn it. I know its not easy, but you'll really enjoy lording it over the other Linux newbies once you do.Well, that's all for this time. See you again soon! -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/21/2009 07:24:00 AM |
From: William S. <bs...@pa...> - 2009-03-27 20:47:22
|
In this installment, we will tackle printing. If you recall from the second installment when we installed Debian on the system, we selected the "print server" group of packages to included with our installation. This installed CUPS (Common Unix Printing System) and related programs. This set of packages allows the system to print local print jobs and (if configured to do so) act as a print server to other systems on the local network.Installing cups-pdfOne of the cool things we can do is install the cups-pdf package which supports a virtual printer that creates PDF files in lieu of actual printed output. After installation, we will take advantage of the package to demonstrate how to configure CUPS. Using apt-get we can install the package this way:sudo apt-get install cups-pdfConfiguring CUPSCUPS, by default, makes available a web-based configuration system. To access it, we will use w3m:w3m http://localhost:631which will open the web page on the local network interface using port 631. After the page opens, we will get a screen like this:With this interface, you can configure: - Local USB, parallel port and virtual printers. - Remote IPP (Internet Printing Protocol) printers. Cups will find them automatically if your network allows it. - Remote SMB (Windows shared) printers. To add the PDF virtual printer, follow this procedure. Note that at some point you may be prompted to enter a user name and password for CUPS. Regular users are not allowed to make system-wide changes to the printing system. When prompted enter the user name "root" and the root password to continue. - Using the tab key, move the cursor to the link labeled "Add Printer" and press enter. - We will see a new page with some input fields. They are delimited with square bracket characters ([]). To enter data into the fields, move the cursor to the field and press enter. A text prompt will appear at the bottom of the screen. - In the first field, "Name:" we will enter the name of the printer to be added. This name is like a file name and should be one word with no spaces. We will call our new printer, PDF. Type the letters PDF at the text prompt and press enter. - Press the tab key to move to the next field, "Location:" and enter "localhost" using the text prompt. - Press the tab key to move to the next field, "Description:" and enter "CUPS-PDF Virtual Printer." - Press the tab key to move to the link labeled "Continue" and press enter. After a few seconds, we will see a new screen with a pull-down box of printer devices. Using the tab key move the cursor to the field labeled "Device:" and press enter. The contents of the list will appear. - Using the arrow keys, select the entry "CUPS-PDF (Virtual PDF Printer)" and press enter. - Press the tab key to move to the "Continue" link. Press enter. - After a few seconds, a new screen will appear, again with a pull-down box. This box is for selecting drivers. The CUPS-PDF driver does not really need this, so open the box labeled "Make:" and select "Generic" and press enter. - Move to the "Contiune" link and press enter. - The next screen will appear and we can skip over the fields (they should already be correct.) Move the cursor to the link labeled "Add Printer" and press enter. - You will briefly see a screen announcing that the printer has been successfully added. It will be followed by a page of printer options. If you need to change any, such as default paper size, do so now. When done, move to the link labeled "Set Printer Options" and press enter. - The final screen contains a summary of the printer setup and contains a list of links for controlling the printer including printing a test page.At this point we are done. You may move to the "Home" link at the top of the page to repeat the process to add more printers.That's all for this installment. Next time we will look at some printer commands that we can use with our new printing capability. -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/27/2009 04:47:00 PM |
From: William S. <bs...@pa...> - 2009-04-09 20:45:05
|
Today, we will finish up with printing by taking a look at the command line tools provided by CUPS. CUPS supports two different families of printer tools. The first, Berkley or LPD comes from the Berkley Software Distribution (BSD) version of Unix and the second is SysV from the System V version of Unix. Both families include comparable functionality, so choosing one over the other is really a matter of personal taste. Setting A Default Printer A printer can be set as the default printer for the system. This will make using the command line print tools easier. To do this we can either use the web-based interface to CUPS at http://localhost:631 or we can use the following command: lpadmin -d printer_name where printer_name is the name of a print queue we defined in Part 6 of the series. Sending A Job To The Printer (Berkley-Style) The lpr program is used to send a job to the printer. It can accept standard input or file name arguments. One of the neat things about CUPS is that it can accept many kinds of data formats and can (within reason) figure out how to print them. Typical formats include PostScript, PDF, text, and images such as JPEG. Here we will print a directory listing in three column format to the default printer: ls /usr/bin | pr -3 | lpr To use a different printer, append -P printer_name to the lpr command. To see a list of available printers: lpstat -a Sending A Job To The Printer (SysV-Style) The SysV print system uses the lp command to send jobs to the printer. It can be used just as lpr in our earlier example: ls /usr/bin | pr -3 | lp however, lp has a different set of options. For example to specify a printer, the -d (for destination) option is used. lp also supports many options for page formatting and printer control not found with the lpr command. Examining Print Job Status While a print job is being printed, you may monitor its progress with the lpq command. This will display a list of all the jobs queued for printing. Each print job is assigned a job number that can be used with to control the job. Terminating Print Jobs Either the lprm (Berkley) or cancel (SysV) commands can be used to remove a job from a printer queue. While the two commands have different option sets, either command followed by a print job number will terminate the specified job. Getting Help The following man pages cover the CUPS printing commands lp lpr lpq lprm lpstat lpoptions lpadmin cancel lpmove In addition, CUPS provides excellent documentation of the printing system commands in the help section of the online interface to the CUPS server at: http://localhost:631/help Select the "Getting Started" link and the "Command Line Printing And Options" topic. A Follow Up On Part 4 Midnight Commander allows direct access to its file viewer and built in text editor. The mcview command can be used to view files and the mcedit command can be used to invoke the editor. -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 4/09/2009 04:32:00 PM |
From: William S. <bs...@pa...> - 2010-02-03 21:39:40
|
In our previous installment we saw how our Debian workstation supports email between users on the system. This time we're going to add the ability to send and receive email over the Internet. One of the reasons that email is such a difficult subject to cover is that there are so many different kinds of email tools and configurations. For this lesson, we are going to create a really simple configuration designed to satisfy the basic needs of a residential user. It is certainly possible to create a much more sophisticated configuration. In fact, with Linux, almost any kind of email setup is possible, including huge enterprise-class solutions. As we saw last time, our email client, mutt, reads mail messages that it finds in a mailbox file located in /var/mail. To send mail, mutt passes a composed message to the exim mail transport agent (MTA) for delivery. So how do we send mail to the outside world? The Traditional Way The traditional way is to configure the MTA to communicate with a smarthost, a remote server that can determine where the remote recipient's mailbox is located and pass the messages to it. Such a configuration can be easily created in Debian by telling the package installer to reconfigure the exim4 package using a script built into the package. This technique is good if your workstation is on a corporate network and you have a mail server through which mail from all users is sent and received. You can find a complete description of this configuration process here. Receiving mail is traditionally done by either configuring the MTA to receive incoming connections from other mail servers, or by running a mail delivery agent program (such as fetchhmail or getmail) that copies the contents of remote mailboxes to the local mailbox. However, the traditional approach is not well suited to our residential workstation because each user may have different email providers, so we need a solution that is potentially different for each user. Of course, with enough configuration, the traditional approach can be made to work, but it wouldn't be pretty. The Client Centric Way For those of you who have used GUI-based email clients like Evolution or Thunderbird, the traditional way probably seems very alien and complex. You have likely used a single email client program that performs all the functions of the multi-program traditional method. That's the approach that we'll try to take. Too bad mutt makes it so hard. The designers of mutt have taken the fairly stern view that a mail user agent (MUA) should be a mail user agent and nothing more. In recent years however, they have softened their stance on this issue somewhat and now offer optional support for SMTP (Simple Mail Transport Protocol) to communicate with smarthosts and POP and IMAP support for reading mail on remote servers. Fortunately, the version of mutt supplied with Debian has these optional features compiled in. In the exercise that follows, we are going to configure mutt to use a POP3 server and an external smarthost, and an IMAP server and an external smarthost. By leaving the configuration of exim unchanged, we will continue to send and receive local mail. Note that you will need to adjust the configuration files listed below to fit your ISP's specific requirements. POP3 Configuration The Post Office Protocol (POP) is an older and less sophisticated mail delivery system. It is common among residential ISPs. To configure mutt to download messages from a remote POP3 (POP version 3, the version most often used today) and to send messages via a remote SMTP server acting as the smarthost, we will create a mutt configuration file and name it ~/.muttrc-pop3: ### POP3 setup for incoming mail # File where incoming messages will be kept set spoolfile=~/mailbox-pop3 # Your user name as understood by your ISP set pop_user = "username" # Your password as understood by your ISP set pop_pass = "password" # Host name of ISP's POP3 server set pop_host = "mail.your_isp.com" # Do not delete messages from POP3 server after downloading. # Change to "yes" after testing. set pop_delete = no ### SMTP setup for outgoing mail # URL of ISP's SMTP server set smtp_url = "smtp://username@mail.your_isp.com/" # Password for SMTP server set smtp_pass = "password" # Your email address as understood by your ISP set from = "username@your_isp.com" # How you want your name to appear in email messages set realname = "Your Name" To execute this configuration, we invoke mutt this way: me@linuxbox:~$ mutt -F ~/.muttrc-pop3 IMAP Configuration If you have a good ISP, they will offer Internet Message Access Protocol (IMAP) on their mail server. IMAP keeps your mail on the server and allows you to maintain multiple folders and has a host of other features lacking in the POP system. In the configuration below, we will communicate with a remote IMAP server using SSL for encryption. We will call this configuration file ~/.muttrc-imap. Note: In order to use SSL authentication, make sure you have the libsasl2-modules package installed on your system. ### IMAP setup for incoming mail # Your email address as understood by your ISP set imap_user = "username@your_isp.com" # Your account password set imap_pass = "password" # Name of your ISP's IMAP server and folder locations set folder = "imaps://mail.your_isp.com:993" set spoolfile = "+INBOX" set postponed="+/Drafts" ### SMTP setup for outgoing mail (using SSL) # URL of ISP's SMTP server including SSL (smtps://) and port # number (:465) as needed. set smtp_url = "smtps://username@mail.your_isp.com:465/" # Password for SMTP server set smtp_pass = "password" # Your email address as understood by your ISP set from = "username@your_isp.com" # How you want your name to appear in email messages set realname = "Your Name" ### Files needed to store IMAP cache and SSL certificates set header_cache=~/.mutt/cache/headers set message_cachedir=~/.mutt/cache/bodies set certificate_file=~/.mutt/certificates To use this configuration, we need to create the directories for the IMAP cache and for SSL certificate storage. We can create them with the following command: me@linuxbox:~$ mkdir -p ~/.mutt/cache/bodies To execute this configuration, we invoke mutt like this: me@linuxbox:~$ mutt -F ~/.muttrc-imap Using Aliases To Support Multiple Configurations We can simplify the invocation of mutt by adding these two lines to our ~/.bashrc file: alias mutt-p='mutt -F ~/.muttrc-pop3' alias mutt-i='mutt -F ~/.muttrc-imap' There you have it. We now have mutt commands for handling local mail (mutt), POP3 mail (mutt-p) and IMAP mail (mutt-i). Further Reading Background on mail protocols: - http://en.wikipedia.org/wiki/Post_Office_Protocol - http://en.wikipedia.org/wiki/Imap - http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol Using mutt with Gmail via IMAP: - http://crunchbanglinux.org/wiki/howto/howto_setup_mutt_with_gmail_imap Mutt configuration samples: - http://wiki.mutt.org/index.cgi?ConfigList -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/03/2010 03:40:00 PM |
From: William S. <bs...@pa...> - 2010-02-05 17:55:29
|
In this installment, we'll finish up our look at email. Now that we have mutt talking to the outside world, it would be handy if we could also send messages from the command line as we did in Part 8 using the mail command. Fortunately, mutt supports the same technique. Using mutt On The Command Line We can send the output of a command to a remote email recipient via our POP3 configuration using a command such as this: me@linuxbox:~$ ls -l | mutt-p -s "test message" so...@so... Here we used the alias "mutt-p" described in the previous installment. Please note that if such an alias were used in a shell script, it would most likely fail because the .bashrc file where the alias is defined is not sourced by the copy of the shell executing the script. In such a case, we would need to spell the command out fully: mutt -F ~/.muttrc-pop3 -s "test message" so...@so... Another Mail Client While Debian installs mutt by default, it's not the only full-featured text-based email client available. Another popular choice is Alpine, the successor to the popular PINE email client from the University of Washington. Alpine is similar to mutt in most respects though I think it has an easier user interface: In addition to the usual email functions, Alpine also sports its own address book and Alpine's configuration is adjustable from within the user interface so that editing the configuration files is not strictly necessary, but its configuration is as complicated as mutt's. Alpine configuration, top-level Alpine configuration, down deep Summing Up Text-based email clients have a long and storied history in the Unix world and remain the tools of choice for serious email users. As you dig deeper into the documentation of mutt and Alpine, you will find that nothing compares to the configurability of either of these programs. Further Reading More support resources for mutt: - http://mutt.blackfish.org.uk/ - http://therandymon.com/woodnotes/mutt/using-mutt.html - http://hacktux.com/mutt/addressbook - http://mark.stosberg.com/Tech/mutt.html For Alpine: - http://www.washington.edu/alpine/ - http://www.washington.edu/alpine/tech-notes/config.html - http://www.ii.com/internet/messaging/pine/ -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/05/2010 12:47:00 PM |
From: William S. <bs...@pa...> - 2010-02-24 17:29:13
|
Now that we have email working on our system, it's time to consider other types of communication tools, in particular, messaging. Text messaging is a very common form of communication today, often surpassing email as way of sending short bursts of small messages. Messaging actually has its roots in early Unix with the development of the write and talk programs in the late 1970s While both talk and write were used to communicate with multiple users sharing a single machine, messaging today generally involves users scattered all over the globe using the Internet. There are many popular messaging protocols such as AIM (AOL Instant Messenger), Jabber, MSN, IRC, and others and many client programs that support one or more of these protocols. Many Linux users are familiar with Pidgin, a graphical, multi-protocol, messaging client. In this installment, we will install a text-based analog to Pidgin called centerim, a fork of an earlier messaging client program called centericq. On our Debian workstation, we can easily install centerim this way: me@linuxbox:~$ sudo apt-get install centerim After the program is installed, we can invoke it like so: me@linuxbox:~$ centerim The first time centerim runs, it displays a two-part configuration screen which is used to configure accounts and other stuff: To demonstrate centerim in action, we'll configure an AIM account. On the second configuration screen, we'll scroll down until we get to the AIM protocol: Next, we'll enter our account information including our AIM screen name and password: After we have the account defined, we use the right arrow key to select "Done." Next, centerim displays our chat window: Pressing the Esc key twice will take you to the top level menu and from there you can go back to the configuration screens (F4) or quit the program (q). Further Reading Centerim and centericq: - http://en.wikipedia.org/wiki/Centerim - http://www.centerim.org - http://www.centerim.org/index.php/Documentation - http://thekonst.net/centericq/ Historical background on text messaging: - http://en.wikipedia.org/wiki/Instant_messaging - http://en.wikipedia.org/wiki/Talk_(software) - http://en.wikipedia.org/wiki/Write_(Unix) -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 2/24/2010 12:29:00 PM |
From: William S. <bs...@pa...> - 2010-03-03 15:00:50
|
In this installment, we're going to take a another look at messaging, this time focusing on Internet Relay Chat (IRC). IRC is a popular text-mode application that finds wide use on a number of platforms. Of most interest to us, is its use as a tech support tool. IRC works by allowing a client program talk to a server that is part of an IRC network. Multiple users connect to the server and organize conversational groups called channels. Channels are topic-oriented and cater to a wide variety of interests. The participants of a channel then can converse with one another via a scrolling text display. The centerim program we recently installed supports IRC in addition to a number of other popular messaging protocols, however, in this installment we will install a dedicated IRC client called irssi. To install irssi, we simply: me@linuxbox:~$ sudo apt-get install irssi To run irssi, we enter the command: me@linuxbox:~$ irssi and the initial screen will appear: The first window displayed by irssi is called the status window. It is used to display information about server connections and other status messages. The initial message in the status message is useful as it points us to the program documentation and some specific connection instructions to join the Debian channel at Debian's own IRC server. As you type, your input is displayed at the bottom of the screen. Entries starting with a slash character are interpreted as IRC commands and everything else as a message to post. To connect to the Debian server we type the following command: /connect irc.debian.org It will take a few seconds to connect. By default, irssi will use your system user name as your "nick" or nickname during an IRC session. It's possible that your user name will conflict with an existing name already registered by a user of that server. In that case, we will get something like this: To overcome this problem, we need to choose another nickname. That is is done by entering this command: /nick new_nickname where new_nickname is the name you wish to use. In the examples that follow, we will use the nickname "linuxbox", but you should make up your own. We enter: /nick linuxbox and if we're successful, the status window will respond: You're now known as linuxbox Now that we have a connection to the IRC server, we next need to join a channel. Channel names start with a the # symbol. We can join the #debian channel by entering this command: /join #debian Next, we will see a list of all the members of the channel scroll by in another window which overlays the status window. The prompt at the bottom of the screen changes to indicate that we are in a different window. Within a window, we can use the PgUp and PgDn keys to scroll the window's contents and we can use the Ctrl-p (previous) and Ctrl-n (next) keys to cycle through the available windows. As we observe the #debian window, it will slowly scroll as members post questions and answers. If you are not familiar with IRC, you should consult a good tutorial and observe the general practices of the group before jumping in. Most channels also post links to official guidelines for the channel's use. You can see the guidelines for the #debian channel here. To end our session, we enter this command: /quit Filtering Output The default configuration of irssi displays a lot of non-message text in channel windows announcing the comings and goings of members: To filter this out of a channel, you can use a command like this: /ignore -channels #debian * JOINS PARTS QUITS NICKS Saving Your Settings As you go through the irssi documention, you will see that irssi has a lot of features and capabilities. After you have changed your settings, such as adding the filter above, you can store your changes by entering the command: /save and your changes will be added to the ~/.irssi/config file. Another Server To Try Many Linux and FOSS projects have official support channels on Freenode. You can reach the Freenode server at irc.freenode.net. Try the #ubuntu, #fedora, etc. channels there. Further Reading IRC tutorials: - http://irchelp.org/irchelp/irctutorial.html - http://en.wikipedia.org/wiki/Wikipedia:IRC/Tutorial - http://wiki.debian.org/DebianIRCChannelGuidelines General IRC background: - http://en.wikipedia.org/wiki/Internet_Relay_Chat - http://en.wikipedia.org/wiki/List_of_Internet_Relay_Chat_commands Freenode: - http://en.wikipedia.org/wiki/Freenode - http://freenode.net/ irssi documentation: - http://www.irssi.org/documentation/startup - http://www.irssi.org/documentation/tips - http://www.irssi.org/documentation -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/03/2010 09:00:00 AM |
From: William S. <bs...@pa...> - 2010-03-11 20:30:59
|
Don't touch that dial! Even the most die hard GUI fans among you will enjoy this. You may have noticed that throughout this series, I have posted screen shots of the applications used on our all-text Linux workstation; screen shots that obviously are taken from a graphical desktop, so what gives? Am I lying about this being an all-text workstation? Not at all. I do take the screen shots on a graphical desktop. How? By logging in to the workstation remotely from another computer. One of the great joys of Unix-like operating systems (such as Linux) is the way they work with networks. Much of the Internet's technology was developed on Unix systems and it shows. Ever wonder why URLs use forward slashes? Unix pathnames! Back in the early days of my Unix career (the mid-1990s), there was a idea going around (foisted by the marketing people at Microsoft) that the newly introduced Windows NT was going to rapidly "kill" Unix. Real Unix people knew this to be patent nonsense (though many of their pointy-haired bosses did not) because NT lacked an essential feature. It didn't support remote administration. I remember system admins complaining bitterly about how to fix even simple problems on NT, they had to travel to the machine and work the graphical interface personally. Meanwhile, my team and I were managing a national network consisting of hundreds of Unix workstations and servers from our little office. The only time we ever had to travel to a site was to replace hardware. Over the years, there have been several Unix technologies used to perform remote administration. Today, the overwhelming favorite is SSH (Secure SHell). SSH allows the creation of a secure encrypted tunnel between machines through which can flow any number of network protocols. It's most common use however is simple command line access to a remote system. It works like this: a local machine runs a SSH client program that talks to a remote machine running a SSH server. Every Linux system I have ever used comes equipped with a SSH client but most distributions do not install the server by default. This is unfortunate since almost every system can benefit from remote administration. Installing The OpenSSH Server The most popular SSH implementation in the Linux world comes from the OpenBSD project. It's called OpenSSH. It is usually broken into two packages: the openssh-client package and the openssh-server package. The client package is usually installed by default but we will need to install the server package on our workstation. We can do this with the following command: me@linuxbox:~$ sudo apt-get install openssh-server That's all there is to it. After the package installs, the service will start and our workstation can now be remotely accessed. To demonstrate, we will open a terminal window on another machine on our network and use the SSH client program (called ssh) to log into our workstation: bshotts@twin2:~$ ssh me@linuxbox The authenticity of host 'linuxbox (192.168.1.7)' can't be established. RSA key fingerprint is bf:bb:0e:9b:af:a1:dd:e0:b6:44:48:79:97:2f:34:97. Are you sure you want to continue connecting (yes/no)? yes The ssh program is invoked with this syntax: ssh [user@]hostname where user is an optional user name and hostname is the network name (or IP address) of the machine we want to connect with. If the user name is omitted, ssh defaults to the name you are currently using on the local system. The first time you connect with a remote system, ssh warns you that it has never seen this remote machine before. One of the security features of SSH is that it authenticates the remote systems you talk to. This ensures that the machine you are talking to really is the machine you think it is. After answering "yes" to the prompt, ssh adds the remote system to its list of remote hosts that it will recognize in future sessions: Warning: Permanently added 'linuxbox' (RSA) to the list of known hosts. Finally, it prompts you for the user's password on the remote system. me@linuxbox's password: Once that is entered, you are logged in! >From here, you can use any of the applications on the workstation just as if you were sitting in front of the workstation's console. To end a SSH session, use the exit command: me@linuxbox"~$ exit Connection to linuxbox closed. bshotts@twin2:~$ Executing A Single Command On A Remote System We can also use the ssh program to remotely execute a single command on our workstation. For example, we could ask our workstation about its uptime and load: bshotts@twin2:~$ ssh me@linuxbox uptime me@linuxbox's password: 13:58:39 up 2 min, 0 users, load average: 0.10, 0.14, 0.06 bshotts@twin2:~$ If a command follows the hostname, ssh will execute the command on the remote system and the command's output is transferred to the local machine for display. Copying Files Using SSH In addition to the ssh program, the openssh-client package also provides two additional programs used for securely copying files to and from remote systems. The first is scp (secure copy) which is used much like the regular cp command. To copy a file named somefile.txt to the home directory of user me on the workstation, we would do this. bshotts@twin2:~$ scp somefile.txt me@linuxbox: me@linuxbox's password: somefile.txt 100% 10 0.0KB/s 00:00 To place the file in a specific directory (and/or rename the file) on the remote system, follow the hostname with the pathname of the desired destination: bshotts@twin2:~$ scp somefile.txt me@linuxbox:/user/local/share/shared_file.txt The second file copying program is sftp (secure ftp) which is a version of the ftp program that uses SSH for transport. Remember, the ordinary ftp program sends all of its data over the network unencrypted (including user names and passwords), making it unsuitable for use over the Internet. Using The GUI With OpenSSH The sftp protocol makes another feature possible. Most graphical file managers support it. From our graphical desktop we can move files to and from the remote workstation. Here's how: In GNOME, we go to Places -> Connect to Server... and fill out the dialog as follows: We will next be prompted for the password on the remote workstation: After that, voila! We're browsing the file system on the remote workstation: Adding Additional Users With the ability to remotely connect to our workstation, it would make sense to add some user accounts. This way, more than one person can be using the workstation at the same time. To add a user account for an imaginary user named "user1", we would do this: me@linuxbox:~$ su - Password: linuxbox:~# adduser user1 Adding user `user1' ... Adding new group `user1' (1001) ... Adding new user `user1' (1001) with group `user1' ... Creating home directory `/home/user1' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for user1 Enter the new value, or press ENTER for the default Full Name []: Workstation User 1 Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y linuxbox:~# exit logout me@linuxbox:~$ Now user1 can log in to the workstation with the command: ssh user1@linuxbox Deleting A User Account This command will remove the above user account, if desired: deluser --remove home user1 Invite Your Friends! Next time you have your Linux buddies over with their laptops, surprise them with individual user accounts on your awesomely configured all-text workstation. You'll be the hit of the party! Further Reading The man pages for ssh, scp, sftp SSH is covered in The Linux Command Line (Chapter 17): - http://linuxcommand.org/tlcl.php OpenSSH: - http://en.wikipedia.org/wiki/OpenSSH - http://www.openssh.com/ - http://www.openssh.com/faq.html Windows users need not feel left out. PuTTY is a popular SSH client for Windows: - http://www.chiark.greenend.org.uk/~sgtatham/putty/ -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/11/2010 03:24:00 PM |
From: William S. <bs...@pa...> - 2010-03-18 13:59:13
|
In this, our final installment, we will look at the screen terminal multiplexing program. What the heck is a "terminal multiplexing program?" I'm glad you asked. Now that we have installed a bunch of interactive applications on our workstations and SSH to allow remote access, we have a slight problem. Is it reasonable for an interactive program (like mutt) monopolize our terminal session? Isn't Linux multi-tasking? On the graphical desktop, we can have many applications running at once and, by moving the mouse, we can switch from application to application. Of course, on the console, we can switch virtual terminals to provide multiple sessions and if we are using SSH, remotely accessing our workstation from a graphical desktop, we can open multiple terminal windows. But there's another way. The screen program allows multiple sessions inside a single terminal. You can create any number of sessions and can even split screens to view two sessions at once. Further (and this is the cool part), screen allows you to "detach" a session from a terminal and later re-attach the session to a different terminal. Installing And Running screen By this time, we all know the drill: me@linuxbox:~$ sudo apt-get install screen will install the screen package. To run screen, we type screen at the prompt followed optionally by the name of a program we want to execute in the screen session. If no program is specified, screen launches a shell. Try this: me@linuxbox:~$ screen top After you run this command, top will execute and everything will appear normal. However screen is now managing the terminal session. screen recognizes a large number of commands. You communicate with screen by pressing Ctrl-a followed by a command letter. For example, to create another session type Ctrl-a c and a new shell prompt will appear. There are now two sessions running in the same terminal. We can cycle through the sessions by repeatedly typing Ctrl-a n (for next). Listing Your Sessions The Ctrl-a " command displays a list of your screen sessions: >From here you can use your up and down arrow keys to select a session to display. Scrolling And Copying If you are using screen on a terminal session displayed in a graphical terminal, you will notice that the normal scrolling mechanism no longer works. This makes sense because if it did, your graphical terminal's scroll back buffer would contain the jumbled contents of all of the screen terminal sessions. screen manages its own scroll back buffers, one for each screen session. To access the scroll back buffer (which is called "copy mode" in the screen documentation), type: Ctrl-a [ and you will be able to use up arrow, PgUp, etc to navigate the buffer. In this mode (which uses many of the vi keyboard sequences) you can copy text for later pasting. You do this by marking text. To mark text, you position the cursor at the beginning of the text you want to copy and press the space bar, then move the cursor to the end of the text you want to copy and press the space bar again. The marked region is copied into a paste buffer and screen exits copy mode. To paste the copied text, type the screen command: Ctrl-a ] Detaching And Reattaching Sessions By far, the coolest feature of screen is its ability to detach and reattach terminal sessions. Picture this scenario: you're at work and you have just started a long running job on your work computer in a terminal. With screen, you can detach the session, log off, go home, reconnect with the your work computer, then reattach the still-running job to your new terminal session. Here is a demonstration (assuming we have another computer besides our workstation, if not, you can use two virtual terminals on the workstation): - Start screen on the workstation and create a few sessions and put applications in them. Try top, mutt, and irssi, for example. - After the applications are running, move over to your second computer and log into the workstation using SSH. - On the second computer, enter the command screen -D -R into the remote SSH session. - Poof! All the screen sessions on the workstation are detached, you are logged off of the workstation console, and all of the sessions are reattached to the terminal running the SSH client on the second computer. Pretty slick! We've only touched on the capabilities of screen. It has many commands and a configuration file that can be used to adjust many of its features. See the links below for more detail. In Conclusion I hope you have enjoyed this series and that you continue to learn about the applications and techniques that we have covered. While we created a workstation that did not have a windowing system, the programs we installed work just fine on graphical workstations too. The text-based capabilities of Linux should never be overlooked. Text-based applications are almost always faster and much less resource-intensive than their graphical counterparts, so they make great additions to you solutions toolbox. Further Reading The official GNU screen site and documentation: - http://www.gnu.org/software/screen/ - http://www.gnu.org/software/screen/manual/ A screen tutorial from the Debian project: - http://www.debian-administration.org/articles/34 A quick reference guide to screen (this site also contains a lot of other well-written screen documentation): - http://aperiodic.net/screen/quick_reference -- Posted By William Shotts to LinuxCommand.org: Tips, News And Rants at 3/18/2010 09:59:00 AM |