Search My Techie Guy

Thursday, July 17, 2014

Know If Your Airtel SIM is Successfully Registered According to UCC's KYC Policy

To confirm registration status simply dial *197# and press OK/yes.
dial *197# to check  your Airtel Uganda registration status
And if you have any registration issues, you can send an email to kyc@ug.airtel.com
You can also register by email, Send your registration details (ID, passport photo, filled in KYC form) to the email above.

Wednesday, July 16, 2014

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

OS is Red Hat Enterprise Linux Server 6.2

Problem:

# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Solution:

Check 1: Make sure you have installed mysql-server NOT just mysql client! :
# yum install mysql
# yum install mysql-server

Check 2: Make sure mysqld is running, if not! start it:

# ps -ef | grep mysqld
root      3451     1  0 18:15 pts/1    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql     3540  3451  0 18:15 pts/1    00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root      3576  3252  0 18:21 pts/1    00:00:00 grep mysqld

# /etc/init.d/mysqld start

Problem Solved:

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Network interface configuration for a Server with multiple interfaces - Linux

I was in a situation where i had to configure multiple interfaces on my Linux server and i needed to reach all the IPs on the server yet they were in different subnets.

Linux has a solution where you can configure multiple routing tables and assign different default routes. it's called iproute2.

The whole procedure is well explain here in this wiki. Good luck and Have fun :-)

Tuesday, July 15, 2014

500 OOPS: cannot change directory:/home/user_name - Problem Solved

OS = Red Hat Enterprise Linux 6.2

Problem:

Created a new user and gave him access to ftp but couldn't login with the error below:

# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): drivetests
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/drivetests
Login failed.
ftp> bye
#

check the current status of your selinux policy:

# getenforce
Enforcing
#

Check the selinux ftp policy status:

# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off


switch on this parameter: ftp_home_dir --> on

# setsebool -P ftp_home_dir on


check again to make sure that it has been switched on:

# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off


Restart the FTP server:

# /etc/init.d/vsftpd restart

Test logging in to ftp again:

# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> bye
221 Goodbye.

GPG key retrieval failed - Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RHEL-6

Problem: Got this error while using yum install on Red Hat Enterprise Linux 6.2

# yum install ftp
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package ftp.x86_64 0:0.17-51.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================================
 Package                                          Arch                                                Version                                                      Repository                                               Size
=================================================================================================================================================================================================================================
Installing:
 ftp                                              x86_64                                              0.17-51.1.el6                                                redhat-dvd                                               57 k

Transaction Summary
=================================================================================================================================================================================================================================
Install       1 Package(s)

Total download size: 57 k
Installed size: 95 k
Is this ok [y/N]: y
Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RHEL-6
GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RHEL-6

Solution:

Edit your repo files under: /etc/yum.repos.d
Make sure the repo file you are trying to use has the right gpgkey
For example, i was using the wrong gpgkey in this file:

# ls -ltr
total 20
-rw-r--r--. 1 root root   78 Jul 15 20:07 redhat.repo
-rw-r--r--. 1 root root  154 Jul 15 20:07 redhat-dvd.repo
-rw-r--r--. 1 root root  957 Nov  5  2012 epel.repo
-rw-r--r--. 1 root root 1056 Nov  5  2012 epel-testing.repo
-rw-r--r--. 1 root root  529 Nov  8  2011 rhel-source.repo

I compared with the gpgkey in rhel-source.repo and editted redhat-dvd.repo to have the same key as below:

# more redhat-dvd.repo 
[redhat-dvd]
name=RHEL-$releasever - dvd 
baseurl=file:///media/redhat-dvd
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release




Mounting a DVD - Red Hat Enterprise 6.2

Insert the DVD in the DVD-ROM and run the following command:

# mkdir /media/redhat-dvd
# mount -t auto /dev/dvd /media/redhat-dvd
mount: block device /dev/sr0 is write-protected, mounting read-only


Run this command to check if the mounting was successful:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_airtelug-lv_root
                       50G  1.7G   46G   4% /
tmpfs                  12G     0   12G   0% /dev/shm
/dev/sda1             485M   37M  423M   9% /boot
/dev/mapper/vg_airtelug-lv_home
                      195G  188M  185G   1% /home
/dev/sr0              3.4G  3.4G     0 100% /media/redhat-dvd
#

Enabling EPEL & DVD Repos for Red Hat Enterprise Linux 6.2

After a fresh installation of RedHat Enterprise Linux 6.2, my repolist was blank:

# yum repolist
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
repolist: 0

Note: Make sure your server has access to the internet and that DNS is correctly configured (You can use Google's Public DNS 8.8.8.8).

Enable the EPEL repo using the following command:

#  rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Retrieving http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.GOjvJB: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

Check again to see if the epel repo has been enabled successfully:

# yum repolist
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
epel/metalink                                                                                                                                                                                             | 1.5 kB     00:00     
epel                                                                                                                                                                                                      | 4.4 kB     00:00     
epel/primary_db                                                                                                                                                                                           | 6.2 MB     00:03     
repo id                                                                                   repo name                                                                                                                        status
epel                                                                                      Extra Packages for Enterprise Linux 6 - x86_64                                                                                   10,998
repolist: 10,998

I noted one issue, even when my repolist show that epel is enable, i can't use it to install packages for example FTP:

# yum install ftp
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
No package ftp available.
Error: Nothing to do

I checked the redhat.repo directory and realised it was empty even after adding the epel repo. so the repo won't work.

# cd /etc/yum.repos.d
# ls -ltr
total 16
-rw-r--r--. 1 root root  529 Nov  8  2011 rhel-source.repo
-rw-r--r--. 1 root root 1056 Nov  5  2012 epel-testing.repo
-rw-r--r--. 1 root root  957 Nov  5  2012 epel.repo
-rw-r--r--. 1 root root   78 Jul 15 19:21 redhat.repo

# more redhat.repo
#
# Certificate-Based Repositories
# Managed by (rhsm) subscription-manager
#

The solution is to open a Red Hat account on http://www.redhat.com/
Register your server using this command and your red hat account login and password:

# rhn_register

Yet another issue was, i did NOT have a valid product subscription for the RHEL 6.2 i installed!
Yet i badly needed to install some packages to get my server running; for example the ftp packages and other small packages.

Solution is that the installation media/DVD has these packages, so you can add a repo to point to your RHEL DVD. Nice :-), i managed to get this to work, continue reading:

Insert the DVD in the DVD-ROM and mount it:
#mkdir /media/redhat-dvd
# mount -t ext4 /dev/dvd /media/redhat-dvd

check to make sure the mounting was OK:
[root@airtelug yum.repos.d]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_airtelug-lv_root
                       50G  1.7G   46G   4% /
tmpfs                  12G     0   12G   0% /dev/shm
/dev/sda1             485M   37M  423M   9% /boot
/dev/mapper/vg_airtelug-lv_home
                      195G  188M  185G   1% /home
/dev/sr0              3.4G  3.4G     0 100% /media/redhat-dvd
[root@airtelug yum.repos.d]#

create a .repo file
#cd  /etc/yum.repos.d
# touch redhat-dvd.repo
[root@airtelug yum.repos.d]# ls -ltr
total 16
-rw-r--r--. 1 root root  529 Nov  8  2011 rhel-source.repo
-rw-r--r--. 1 root root 1056 Nov  5  2012 epel-testing.repo
-rw-r--r--. 1 root root  957 Nov  5  2012 epel.repo
-rw-r--r--. 1 root root   78 Jul 15 19:21 redhat.repo
-rw-r--r--. 1 root root    0 Jul 15 19:49 redhat-dvd.repo
[root@airtelug yum.repos.d]#

copy the contents of the rhel-source.repo into you new dvd repo file

#cat rhel-source.repo > redhat-dvd.repo

Edit the dvd repo file to make sure that the fields are consistent with your choices:
see mine here:

[root@airtelug yum.repos.d]# more redhat-dvd.repo
[redhat-dvd]
name=RHEL-$releasever - dvd
baseurl=file:///media/redhat-dvd
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@airtelug yum.repos.d]#

so use vi to edit your repo file accordingly

#vi redhat-dvd.repo

Run yum repolist to update the repositories:

# yum repolist

Your new DVD repo should appear in the list.
You can now use your new DVD repo to search for and install packages

# yum search ftp
# yum install ftp

Leave a comment if you are having any issues related to adding a DVD repo and i will be glad to help :-)



Unix Search and Edit (SED) Cheat Sheet

SED ONE-LINE SCRIPTS:

FILE SPACING:

 # double space a file
 sed G

 # double space a file which already has blank lines in it. Output file
 # should contain no more than one blank line between lines of text.
 sed '/^$/d;G'

 # triple space a file
 sed 'G;G'

 # undo double-spacing (assumes even-numbered lines are always blank)
 sed 'n;d'

 # insert a blank line above every line which matches "regex"
 sed '/regex/{x;p;x;}'

 # insert a blank line below every line which matches "regex"
 sed '/regex/G'

 # insert a blank line above and below every line which matches "regex"
 sed '/regex/{x;p;x;G;}'

NUMBERING:

 # number each line of a file (simple left alignment). Using a tab (see
 # note on '\t' at end of file) instead of space will preserve margins.
 sed = filename | sed 'N;s/\n/\t/'

 # number each line of a file (number on left, right-aligned)
 sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'

 # number each line of file, but only print numbers if line is not blank
 sed '/./=' filename | sed '/./N; s/\n/ /'

 # count lines (emulates "wc -l")
 sed -n '$='

TEXT CONVERSION AND SUBSTITUTION:

 # IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.
 sed 's/.$//'               # assumes that all lines end with CR/LF
 sed 's/^M$//'              # in bash/tcsh, press Ctrl-V then Ctrl-M
 sed 's/\x0D$//'            # works on ssed, gsed 3.02.80 or higher

 # IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format.
 sed "s/$/`echo -e \\\r`/"            # command line under ksh
 sed 's/$'"/`echo \\\r`/"             # command line under bash
 sed "s/$/`echo \\\r`/"               # command line under zsh
 sed 's/$/\r/'                        # gsed 3.02.80 or higher

 # IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format.
 sed "s/$//"                          # method 1
 sed -n p                             # method 2

 # IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.
 # Can only be done with UnxUtils sed, version 4.0.7 or higher. The
 # UnxUtils version can be identified by the custom "--text" switch
 # which appears when you use the "--help" switch. Otherwise, changing
 # DOS newlines to Unix newlines cannot be done with sed in a DOS
 # environment. Use "tr" instead.
 sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or higher
 tr -d \r <infile >outfile            # GNU tr version 1.22 or higher

 # delete leading whitespace (spaces, tabs) from front of each line
 # aligns all text flush left
 sed 's/^[ \t]*//'                    # see note on '\t' at end of file

 # delete trailing whitespace (spaces, tabs) from end of each line
 sed 's/[ \t]*$//'                    # see note on '\t' at end of file

 # delete BOTH leading and trailing whitespace from each line
 sed 's/^[ \t]*//;s/[ \t]*$//'

 # insert 5 blank spaces at beginning of each line (make page offset)
 sed 's/^/     /'

 # align all text flush right on a 79-column width
 sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space

 # center all text in the middle of 79-column width. In method 1,
 # spaces at the beginning of the line are significant, and trailing
 # spaces are appended at the end of the line. In method 2, spaces at
 # the beginning of the line are discarded in centering the line, and
 # no trailing spaces appear at the end of lines.
 sed  -e :a -e 's/^.\{1,77\}$/ & /;ta'                     # method 1
 sed  -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'  # method 2

 # substitute (find and replace) "foo" with "bar" on each line
 sed 's/foo/bar/'             # replaces only 1st instance in a line
 sed 's/foo/bar/4'            # replaces only 4th instance in a line
 sed 's/foo/bar/g'            # replaces ALL instances in a line
 sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # replace the next-to-last case
 sed 's/\(.*\)foo/\1bar/'            # replace only the last case

 # substitute "foo" with "bar" ONLY for lines which contain "baz"
 sed '/baz/s/foo/bar/g'

 # substitute "foo" with "bar" EXCEPT for lines which contain "baz"
 sed '/baz/!s/foo/bar/g'

 # change "scarlet" or "ruby" or "puce" to "red"
 sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # most seds
 gsed 's/scarlet\|ruby\|puce/red/g'                # GNU sed only

 # reverse order of lines (emulates "tac")
 # bug/feature in HHsed v1.5 causes blank lines to be deleted
 sed '1!G;h;$!d'               # method 1
 sed -n '1!G;h;$p'             # method 2

 # reverse each character on the line (emulates "rev")
 sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

 # join pairs of lines side-by-side (like "paste")
 sed '$!N;s/\n/ /'

 # if a line ends with a backslash, append the next line to it
 sed -e :a -e '/\\$/N; s/\\\n//; ta'

 # if a line begins with an equal sign, append it to the previous line
 # and replace the "=" with a single space
 sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

 # add commas to numeric strings, changing "1234567" to "1,234,567"
 gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sed
 sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # other seds

 # add commas to numbers with decimal points and minus signs (GNU sed)
 gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'

 # add a blank line every 5 lines (after lines 5, 10, 15, 20, etc.)
 gsed '0~5G'                  # GNU sed only
 sed 'n;n;n;n;G;'             # other seds

SELECTIVE PRINTING OF CERTAIN LINES:

 # print first 10 lines of file (emulates behavior of "head")
 sed 10q

 # print first line of file (emulates "head -1")
 sed q

 # print the last 10 lines of a file (emulates "tail")
 sed -e :a -e '$q;N;11,$D;ba'

 # print the last 2 lines of a file (emulates "tail -2")
 sed '$!N;$!D'

 # print the last line of a file (emulates "tail -1")
 sed '$!d'                    # method 1
 sed -n '$p'                  # method 2

 # print the next-to-the-last line of a file
 sed -e '$!{h;d;}' -e x              # for 1-line files, print blank line
 sed -e '1{$q;}' -e '$!{h;d;}' -e x  # for 1-line files, print the line
 sed -e '1{$d;}' -e '$!{h;d;}' -e x  # for 1-line files, print nothing

 # print only lines which match regular expression (emulates "grep")
 sed -n '/regexp/p'           # method 1
 sed '/regexp/!d'             # method 2

 # print only lines which do NOT match regexp (emulates "grep -v")
 sed -n '/regexp/!p'          # method 1, corresponds to above
 sed '/regexp/d'              # method 2, simpler syntax

 # print the line immediately before a regexp, but not the line
 # containing the regexp
 sed -n '/regexp/{g;1!p;};h'

 # print the line immediately after a regexp, but not the line
 # containing the regexp
 sed -n '/regexp/{n;p;}'

 # print 1 line of context before and after regexp, with line number
 # indicating where the regexp occurred (similar to "grep -A1 -B1")
 sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h

 # grep for AAA and BBB and CCC (in any order)
 sed '/AAA/!d; /BBB/!d; /CCC/!d'

 # grep for AAA and BBB and CCC (in that order)
 sed '/AAA.*BBB.*CCC/!d'

 # grep for AAA or BBB or CCC (emulates "egrep")
 sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # most seds
 gsed '/AAA\|BBB\|CCC/!d'                        # GNU sed only

 # print paragraph if it contains AAA (blank lines separate paragraphs)
 # HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts below
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

 # print paragraph if it contains AAA and BBB and CCC (in any order)
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'

 # print paragraph if it contains AAA or BBB or CCC
 sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
 gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # GNU sed only

 # print only lines of 65 characters or longer
 sed -n '/^.\{65\}/p'

 # print only lines of less than 65 characters
 sed -n '/^.\{65\}/!p'        # method 1, corresponds to above
 sed '/^.\{65\}/d'            # method 2, simpler syntax

 # print section of file from regular expression to end of file
 sed -n '/regexp/,$p'

 # print section of file based on line numbers (lines 8-12, inclusive)
 sed -n '8,12p'               # method 1
 sed '8,12!d'                 # method 2

 # print line number 52
 sed -n '52p'                 # method 1
 sed '52!d'                   # method 2
 sed '52q;d'                  # method 3, efficient on large files

 # beginning at line 3, print every 7th line
 gsed -n '3~7p'               # GNU sed only
 sed -n '3,${p;n;n;n;n;n;n;}' # other seds

 # print section of file between two regular expressions (inclusive)
 sed -n '/Iowa/,/Montana/p'             # case sensitive

SELECTIVE DELETION OF CERTAIN LINES:

 # print all of file EXCEPT section between 2 regular expressions
 sed '/Iowa/,/Montana/d'

 # delete duplicate, consecutive lines from a file (emulates "uniq").
 # First line in a set of duplicate lines is kept, rest are deleted.
 sed '$!N; /^\(.*\)\n\1$/!P; D'

 # delete duplicate, nonconsecutive lines from a file. Beware not to
 # overflow the buffer size of the hold space, or else use GNU sed.
 sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'

 # delete all lines except duplicate lines (emulates "uniq -d").
 sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'

 # delete the first 10 lines of a file
 sed '1,10d'

 # delete the last line of a file
 sed '$d'

 # delete the last 2 lines of a file
 sed 'N;$!P;$!D;$d'

 # delete the last 10 lines of a file
 sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1
 sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2

 # delete every 8th line
 gsed '0~8d'                           # GNU sed only
 sed 'n;n;n;n;n;n;n;d;'                # other seds

 # delete lines matching pattern
 sed '/pattern/d'

 # delete ALL blank lines from a file (same as "grep '.' ")
 sed '/^$/d'                           # method 1
 sed '/./!d'                           # method 2

 # delete all CONSECUTIVE blank lines from file except the first; also
 # deletes all blank lines from top and end of file (emulates "cat -s")
 sed '/./,/^$/!d'          # method 1, allows 0 blanks at top, 1 at EOF
 sed '/^$/N;/\n$/D'        # method 2, allows 1 blank at top, 0 at EOF

 # delete all CONSECUTIVE blank lines from file except the first 2:
 sed '/^$/N;/\n$/N;//D'

 # delete all leading blank lines at top of file
 sed '/./,$!d'

 # delete all trailing blank lines at end of file
 sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # works on all seds
 sed -e :a -e '/^\n*$/N;/\n$/ba'        # ditto, except for gsed 3.02.*

 # delete the last line of each paragraph
 sed -n '/^$/{p;h;};/./{x;/./p;}'

SPECIAL APPLICATIONS:

 # remove nroff overstrikes (char, backspace) from man pages. The 'echo'
 # command may need an -e switch if you use Unix System V or bash shell.
 sed "s/.`echo \\\b`//g"    # double quotes required for Unix environment
 sed 's/.^H//g'             # in bash/tcsh, press Ctrl-V and then Ctrl-H
 sed 's/.\x08//g'           # hex expression for sed 1.5, GNU sed, ssed

 # get Usenet/e-mail message header
 sed '/^$/q'                # deletes everything after first blank line

 # get Usenet/e-mail message body
 sed '1,/^$/d'              # deletes everything up to first blank line

 # get Subject header, but remove initial "Subject: " portion
 sed '/^Subject: */!d; s///;q'

 # get return address header
 sed '/^Reply-To:/q; /^From:/h; /./d;g;q'

 # parse out the address proper. Pulls out the e-mail address by itself
 # from the 1-line return address header (see preceding script)
 sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'

 # add a leading angle bracket and space to each line (quote a message)
 sed 's/^/> /'

 # delete leading angle bracket & space from each line (unquote a message)
 sed 's/^> //'

 # remove most HTML tags (accommodates multiple-line tags)
 sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

 # extract multi-part uuencoded binaries, removing extraneous header
 # info, so that only the uuencoded portion remains. Files passed to
 # sed must be passed in the proper order. Version 1 can be entered
 # from the command line; version 2 can be made into an executable
 # Unix shell script. (Modified from a script by Rahul Dhesi.)
 sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode   # vers. 1
 sed '/^end/,/^begin/d' "$@" | uudecode                    # vers. 2

 # sort paragraphs of file alphabetically. Paragraphs are separated by blank
 # lines. GNU sed uses \v for vertical tab, or any unique char will do.
 sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'
 gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'

 # zip up each .TXT file individually, deleting the source file and
 # setting the name of each .ZIP file to the basename of the .TXT file
 # (under DOS: the "dir /b" switch returns bare filenames in all caps).
 echo @echo off >zipup.bat
 dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat

TYPICAL USE: Sed takes one or more editing commands and applies all of
them, in sequence, to each line of input. After all the commands have
been applied to the first input line, that line is output and a second
input line is taken for processing, and the cycle repeats. The
preceding examples assume that input comes from the standard input
device (i.e, the console, normally this will be piped input). One or
more filenames can be appended to the command line if the input does
not come from stdin. Output is sent to stdout (the screen). Thus:

 cat filename | sed '10q'        # uses piped input
 sed '10q' filename              # same effect, avoids a useless "cat"
 sed '10q' filename > newfile    # redirects output to disk

QUOTING SYNTAX: The preceding examples use single quotes ('...')
instead of double quotes ("...") to enclose editing commands, since
sed is typically used on a Unix platform. Single quotes prevent the
Unix shell from intrepreting the dollar sign ($) and backquotes
(`...`), which are expanded by the shell if they are enclosed in
double quotes. Users of the "csh" shell and derivatives will also need
to quote the exclamation mark (!) with the backslash (i.e., \!) to
properly run the examples listed above, even within single quotes.
Versions of sed written for DOS invariably require double quotes
("...") instead of single quotes to enclose editing commands.

USE OF '\t' IN SED SCRIPTS: For clarity in documentation, we have used
the expression '\t' to indicate a tab character (0x09) in the scripts.
However, most versions of sed do not recognize the '\t' abbreviation,
so when typing these scripts from the command line, you should press
the TAB key instead. '\t' is supported as a regular expression
metacharacter in awk, perl, and HHsed, sedmod, and GNU sed v3.02.80.

VERSIONS OF SED: Versions of sed do differ, and some slight syntax
variation is to be expected. In particular, most do not support the
use of labels (:name) or branch instructions (b,t) within editing
commands, except at the end of those commands. We have used the syntax
which will be portable to most users of sed, even though the popular
GNU versions of sed allow a more succinct syntax. When the reader sees
a fairly long command such as this:

   sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d

it is heartening to know that GNU sed will let you reduce it to:

   sed '/AAA/b;/BBB/b;/CCC/b;d'      # or even
   sed '/AAA\|BBB\|CCC/b;d'

In addition, remember that while many versions of sed accept a command
like "/one/ s/RE1/RE2/", some do NOT allow "/one/! s/RE1/RE2/", which
contains space before the 's'. Omit the space when typing the command.

OPTIMIZING FOR SPEED: If execution speed needs to be increased (due to
large input files or slow processors or hard disks), substitution will
be executed more quickly if the "find" expression is specified before
giving the "s/.../.../" instruction. Thus:

   sed 's/foo/bar/g' filename         # standard replace command
   sed '/foo/ s/foo/bar/g' filename   # executes more quickly
   sed '/foo/ s//bar/g' filename      # shorthand sed syntax

On line selection or deletion in which you only need to output lines
from the first part of the file, a "quit" command (q) in the script
will drastically reduce processing time for large files. Thus:

   sed -n '45,50p' filename           # print line nos. 45-50 of a file
   sed -n '51q;45,50p' filename       # same, but executes much faster

Monday, July 7, 2014

Linux - How to check, enable & disable the ip firewall (iptables)?

Am running these commands on "Red Hat Enterprise Linux Server release 6.4":

To check current status of the firewall:
# service iptables status

To Start the firewall
# service iptables start

To Stop the firewall
# service iptables stop

To Restart the firewall
# service iptables restart

To check the iptables configuration
# cat /etc/sysconfig/iptables

To edit the iptables configuration
# vi /etc/sysconfig/iptables


Command to Check the Linux Distrubution Name & Version

Use the following commands:

# cat /etc/*release
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Red Hat Enterprise Linux Server release 6.4 (Santiago)
#
# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.4 (Santiago)
Release: 6.4
Codename: Santiago

# cat /etc/*release
openSUSE 13.2 (x86_64)
VERSION = 13.2
CODENAME = Harlequin
# /etc/SuSE-release is deprecated and will be removed in the future, use /etc/os-release instead
NAME=openSUSE
VERSION="13.2 (Harlequin)"
VERSION_ID="13.2"
PRETTY_NAME="openSUSE 13.2 (Harlequin) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:13.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"

Tuesday, July 1, 2014

How to create a linux user and enable ftp

Here, you will create a linux user account on the command line, and grant that user ftp access:
(Am using SUSE Linux, Enterprise).

1. Create the User Account:

# useradd -d /home/peter -m peter
# passwd peter
#
#

2. Test if ftp service is working (connection refused means that ftp is NOT running):

# ftp localhost
Trying 127.0.0.1...
ftp: connect to address 127.0.0.1: Connection refused
Trying ::1...
ftp: connect: Connection refused

3. Start FTP Server:

/etc/init.d/vsftpd start
Starting vsftpd                                                       done


4. Test Again (Now it's connected):

# ftp localhost
Trying 127.0.0.1...
Connected to localhost.
220 (vsFTPd 2.0.4)
Name (localhost:root): 

5. Try to Login with the user we created (fails):

Name (localhost:root): peter
530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

6. This means that local users are NOT allowed to access the ftp service.

7. So we edit the vsftpd.conf file and remove the hash from this line:

# vi /etc/vsftpd.conf

8. Before:

# Local FTP user Settings

# Uncomment this to allow local users to log in.
#
#local_enable=YES

9. After:

# Local FTP user Settings

# Uncomment this to allow local users to log in.
#
local_enable=YES

10. Restart the vsftpd service

# /etc/init.d/vsftpd restart
Shutting down vsftpd                                                  done
Starting vsftpd                                                       done


11. Try to login Again:

# ftp localhost
Trying 127.0.0.1...
Connected to localhost.
220 (vsFTPd 2.0.4)
Name (localhost:root): peter
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> 

12. Problem Solved :-)


Command to Check Memory, CPU and HDD for Linux

Check CPU:
$ cat /proc/cpuinfo
Check Memory:
$ free
$ cat /proc/meminfo
Check HDD:
$ df -h
$ sudo fdisk -l
$ hdparm -i /dev/device (for example sda1, hda3...)

Download Free PC Games

I just downloaded MAX PAYNE 3 from this website and i think these guys pretty much have it all, so if you are looking to download a PC Game, this wouldn't be a bad place to start your search.
Here is the link to their website and have fun.

Note: Large files are split into smaller files to make it easy to upload/download, but this should not be a challenge. The files are compressed in ".rar" archives and if you have WinRAR, all you have to do is download these files into one location or folder, then extract the first file (usually named part01.rar), WinRAR will automatically join the other file parts and uncompress them into one folder.

Have fun :-)