Sabtu, 12 Maret 2016

Basic vi Commands

What is vi?

The default editor that comes with the UNIX operating system is called vi (visual editor). [Alternate editors for UNIX environments include pico and emacs, a product of GNU.]
The UNIX vi editor is a full screen editor and has two modes of operation:
  1. Command mode commands which cause action to be taken on the file, and
  2. Insert mode in which entered text is inserted into the file.
In the command mode, every character typed is a command that does something to the text file being edited; a character typed in the command mode may even cause the vi editor to enter the insert mode. In the insert mode, every character typed is added to the text in the file; pressing the <Esc> (Escape) key turns off the Insert mode.
While there are a number of vi commands, just a handful of these is usually sufficient for beginning vi users. To assist such users, this Web page contains a sampling of basic vi commands. The most basic and useful commands are marked with an asterisk (* or star) in the tables below. With practice, these commands should become automatic.
NOTE: Both UNIX and vi are case-sensitive. Be sure not to use a capital letter in place of a lowercase letter; the results will not be what you expect.



To Get Into and Out Of vi


To Start vi


To use vi on a file, type in vi filename. If the file named filename exists, then the first page (or screen) of the file will be displayed; if the file does not exist, then an empty file and screen are created into which you may enter text.

*vi filenameedit filename starting at line 1
 vi -r filenamerecover filename that was being edited when system crashed

To Exit vi


Usually the new or modified file is saved when you leave vi. However, it is also possible to quit vi without saving the file.
Note: The cursor moves to bottom of screen whenever a colon (:) is typed. This type of command is completed by hitting the <Return> (or <Enter>) key.

*:x<Return>quit vi, writing out modified file to file named in original invocation
 :wq<Return>quit vi, writing out modified file to file named in original invocation
 :q<Return>quit (or exit) vi
*:q!<Return>quit vi even though latest changes have not been saved for this vi call



Moving the Cursor


Unlike many of the PC and MacIntosh editors, the mouse does not move the cursor within the vi editor screen (or window). You must use the the key commands listed below. On some UNIX platforms, the arrow keys may be used as well; however, since vi was designed with the Qwerty keyboard (containing no arrow keys) in mind, the arrow keys sometimes produce strange effects in viand should be avoided.
If you go back and forth between a PC environment and a UNIX environment, you may find that this dissimilarity in methods for cursor movement is the most frustrating difference between the two.
In the table below, the symbol ^ before a letter means that the <Ctrl> key should be held down while the letter key is pressed.

*j or <Return>
  [or down-arrow]
move cursor down one line
*k [or up-arrow]move cursor up one line
*h or <Backspace>
  [or left-arrow]
move cursor left one character
*l or <Space>
  [or right-arrow]
move cursor right one character
*0 (zero)move cursor to start of current line (the one with the cursor)
*$move cursor to end of current line
 wmove cursor to beginning of next word
 bmove cursor back to beginning of preceding word
 :0<Return> or 1Gmove cursor to first line in file
 :n<Return> or nGmove cursor to line n
 :$<Return> or Gmove cursor to last line in file



Screen Manipulation


The following commands allow the vi editor screen (or window) to move up or down several lines and to be refreshed.

 ^fmove forward one screen
 ^bmove backward one screen
 ^dmove down (forward) one half screen
 ^umove up (back) one half screen
 ^lredraws the screen
 ^rredraws the screen, removing deleted lines



Adding, Changing, and Deleting Text


Unlike PC editors, you cannot replace or delete text by highlighting it with the mouse. Instead use the commands in the following tables.
Perhaps the most important command is the one that allows you to back up and undo your last action. Unfortunately, this command acts like a toggle, undoing and redoing your most recent action. You cannot go back more than one step.

*uUNDO WHATEVER YOU JUST DID; a simple toggle

The main purpose of an editor is to create, add, or modify text for a file.

Inserting or Adding Text


The following commands allow you to insert and add text. Each of these commands puts the vi editor into insert mode; thus, the <Esc> key must be pressed to terminate the entry of text and to put the vieditor back into command mode.
*iinsert text before cursor, until <Esc> hit
 Iinsert text at beginning of current line, until <Esc> hit
*aappend text after cursor, until <Esc> hit
 Aappend text to end of current line, until <Esc> hit
*oopen and put text in a new line below current line, until <Esc> hit
*Oopen and put text in a new line above current line, until <Esc> hit

Changing Text


The following commands allow you to modify text.
*rreplace single character under cursor (no <Esc> needed)
 Rreplace characters, starting with current cursor position, until <Esc> hit
 cwchange the current word with new text,
starting with the character under cursor, until <Esc> hit
 cNwchange N words beginning with character under cursor, until <Esc> hit;
  e.g., c5w changes 5 words
 Cchange (replace) the characters in the current line, until <Esc> hit
 ccchange (replace) the entire current line, stopping when <Esc> is hit
 Ncc or cNcchange (replace) the next N lines, starting with the current line,
stopping when <Esc> is hit

Deleting Text


The following commands allow you to delete text.
*xdelete single character under cursor
 Nxdelete N characters, starting with character under cursor
 dwdelete the single word beginning with character under cursor
 dNwdelete N words beginning with character under cursor;
  e.g., d5w deletes 5 words
 Ddelete the remainder of the line, starting with current cursor position
*dddelete entire current line
 Ndd or dNddelete N lines, beginning with the current line;
  e.g., 5dd deletes 5 lines

Cutting and Pasting Text


The following commands allow you to copy and paste text.
 yycopy (yank, cut) the current line into the buffer
 Nyy or yNycopy (yank, cut) the next N lines, including the current line, into the buffer
 pput (paste) the line(s) in the buffer into the text after the current line



Other Commands


Searching Text


A common occurrence in text editing is to replace one word or phase by another. To locate instances of particular sets of characters (or strings), use the following commands.
 /stringsearch forward for occurrence of string in text
 ?stringsearch backward for occurrence of string in text
 nmove to next occurrence of search string
 Nmove to next occurrence of search string in opposite direction

Determining Line Numbers


Being able to determine the line number of the current line or the total number of lines in the file being edited is sometimes useful.
 :.=returns line number of current line at bottom of screen
 :=returns the total number of lines at bottom of screen
 ^gprovides the current line number, along with the total number of lines,
in the file at the bottom of the screen



Saving and Reading Files

These commands permit you to input and output files other than the named file with which you are currently working.

 :r filename<Return>read file named filename and insert after current line
(the line with cursor)
 :w<Return>write current contents to file named in original vi call
 :w newfile<Return>write current contents to a new file named newfile
 :12,35w smallfile<Return>write the contents of the lines numbered 12 through 35 to a new file named smallfile
 :w! prevfile<Return>write current contents over a pre-existing file named prevfile

FreeBSD: Install sudo Command To Execute A Command As The Root

source: http://www.cyberciti.biz/faq/freebsd-install-sudo-command/

Sudo is a program designed to allow a sysadmin to give limited root privileges to users and log root activity. Unlike su, sudo authenticates users against their own password rather than that of the target user. Sudo allows a system administrator to delegate authority to give certain users (or groups of users) the ability to run some (or all) commands as root or another user while providing an audit trail of the commands and their arguments. This allow the delegation of specific commands to specific users on specific hosts without sharing passwords among them.

Install sudo using FreeBSD port system

To install the port, enter:
# cd /usr/ports/security/sudo/ && make install clean

Install sudo using pkg_add comamnd

To add the binary package, run
# pkg_add -rv sudo
OR
# pkg_add -r sudo
Sample outputs:
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.0-release/Latest/sudo.tbz... Done.

How do I configure sudo?

The default configuration file is located at /usr/local/etc/sudoers. This file MUST be edited with the visudo command as root. Failure to use visudo may result in syntax or file permission errors that prevent sudo from running.
% su -
# visudo

Allow user vivek to run all admin tasks via sudo:
vivek ALL=(ALL) ALL
Allow members of group wheel to execute any command:
%wheel ALL=(ALL) ALL
Save and close the file.

Task: Become a root user with sudo

Type the following command
% sudo -s
Sample outputs:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
 
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
 
Password: <Enter Your Own Password Here>
fdbsd9#

Task: Run any command as root

The syntax is:
sudo /path/to/command
sudo /path/to/command arg1
In this example, restart ftpd service:
% sudo /etc/rc.d/ftpd restart
Sample outputs:
Password: <Enter Your Own Password Here>
Stopping ftpd.
Starting ftpd.

Sabtu, 16 Januari 2016

Analyzing web traffic with awstats

http://www.freebsdmadeeasy.com/tutorials/web-server/analyze-apache-web-server-logs-with-awstats.php

Once your web server is up and running it is important to analyze your logs to see what searches are bringing users to the sites, how long they are staying, and what pages they are coming in and going out on. One of the most popular open source tools for this task is awstats.

Installing awstats from the ports

# cd /usr/ports/www/awstats
# make install
Awstats installs to /usr/local/www/awstats and needs to following lines added to your apache httpd.conf
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/www/awstats/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
After this you will need to restart apache for the settings to take effect.
# apachectl graceful

Configuring awstats

A config file must be created for every website. These are placed in /usr/local/www/awstats/cgi-bin The awstats.model.conf is the example file so first copy it over so that you have a new one to work with.
# cp awstats.model.conf awstats.yoursite.conf
Once you have a file for your site open it and begin editting it. There are many options which are explained in the file, but the only necessary ones to change are the hostname, and any aliases used for the site. You also need to change the log type if you are not using the apache combined format.

Updating the stats

Viewing the stats is a seperate process from updating the stats. To have awstats parse your log files and update the stats daily you need to create a cron job for awstats.
30 4 * * * /usr/local/www/awstats/cgi-bin/awstats.pl
  -update -config=yoursite 
The above will update the stats using the awstats.yoursite.conf file every morning at 4:30am. Notice that for the config file awstats.yoursite.conf the awstats and conf are left off.

Updating multiple sites

Once you get a large number of sites added to awstats keeping tracking of all the crons to update them can be a problem, especially if you are trying to keep them all from running at the same time by spacing out the times. To simplify things you can use this awstats updater script to update the stats for every config file in the awstats/cgi-bin.

Viewing the stats

Now that the stats have been updated you can view them online by pointing your browser to www.yoursite.com/awstats/awstats.pl?config=yoursite

Howto use multiple SSH keys for password less login

http://www.cyberciti.biz/tips/linux-multiple-ssh-key-based-authentication.html 


Step # 1: Generate first ssh key

Type the following command to generate your first public and private key on a local workstation. Next provide the required input or accept the defaults. Please do not change the filename and directory location.
workstation#1 $ ssh-keygen -t rsa
Finally, copy your public key to your remote server using scp
workstation#1 $ scp ~/.ssh/id_rsa.pub user@remote.server.com:.ssh/authorized_keys

Step # 2: Generate next/multiple ssh key

a) Login to 2nd workstation
b) Download original the authorized_keys file from remote server using scp:
workstation#2 $ scp user@remote.server.com:.ssh/authorized_keys ~/.ssh
c) Now create the new pub/private key:
workstation#2 $ ssh-keygen -t rsa
d) Now you have new public key. APPEND this key to the downloaded authorized_keys file using cat command:
workstation#2 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
e) Finally upload authorized_keys to remote server again:
workstation#2 $ scp ~/.ssh/authorized_keys user@remote.server.com:.ssh/
You can repeat step #2 for each user or workstations for remote server.

Step #3: Test your setup

Now try to login from Workstation #1, #2 and so on to remote server. You should not be asked for a password:
workstation#1 $ ssh user@remote.server.com
workstation#2 $ ssh user@remote.server.com