Friday 25 April 2014

Unix /Linux Mail Command Tutorial with Examples

unix-linux-mail-command-tutorial
The mail/Mail/mailx  commands are used in unix flavoured operating systems like Linux, HPUX, AIX,Linux and many more unix based systems  are  used to send emails to the users, to read the received emails, to delete the emails etc.

It would be very usefull  when you are working with shell scripts. A good application for using mail/mailx would be to send alerts, or process a file and then email it to somebody, extract data from your database/application  and email the resulting data or file, etc.



The syntax of mail command is:
mail [options] to-address [-- sendmail-options]

-v : Verbose mode. Delivery details are displayed on the terminal.
-s : Specify the subject of the mail
-c : Send carbon copies of the mail to the list of users. This is like cc option in Microsoft outlook.
-b : Send blind copies of the mail to the list of users. This is like bcc option in outlook.
-f : Read the contents of the mailbox
-e : Tests for the presence of mail in the system mailbox.
-F : Records the message in a file named after the recipient.
-r : Specify the from address in send mail options.
-u : Specifies an abbreviated equivalent of doing mail -f /var/spool/mail/UserID.

1)To start the Mail program and list the messages in your mailbox:

# mail
The mail command lists every messages in your system mailbox. The mail system then displays the mailbox prompt (?) to indicate waiting for input.

When you see this prompt, enter any mailbox subcommand. To see a list of subcommands, type:
?
This entry lists the Mail subcommands.

2) Sending  email to  a user:

# echo "Test of Mail body" | mail -s "Mail subject" to@somedomain.com

Here the echo statement is used for specifying the body of the email.
The -s option is used for specifying the mail subject. The mail command sends the email to the user to@somedomain.com
another way is
# mail -s "Mail subject" to@somedomain.com
in this example you are then expected to type in your message, followed by an "control-D" at the beginning of a line. To stop simply type dot (.) as follows:
Hi,
This is a test
.
Cc:
if you wish to send to multiple mail users just add the mail ids side by side with spaces

Lets re-write above command for multi recipients
# echo "Test of Mail body" | mail -s "Mail subject" recipient1@somedomain.com  recipient2@somedomain.com to1@example.com

3) Sending contents of a text file

you can send the contets in two ways using cat/echo or using a input redirect < operator

Lets say for example here we need send contents of  somefile.txt  through mail ,
# cat  somefile.txt  | mail -s "Mail subject" "user1@example.com,user2@example.com"
# mail -s "Mail subject" "user1@example.com,user2@example.com" < somefile.txt

4) Mail Usage with CC & Bcc :

 Using the cc and bcc option You can copy the emails to more number of users by using the -c & -b options. An example is shown below:
# echo "something" | mailx -s "subject" -b bcc_user@unixmantra.com -c cc_user@some.com  -r sender@some.com recipient@example.com
# mail -s "Mail subject" -c "cc_user@some.com" -b "bccuser@yahoo.com" "user@example.com" < somefile.txt

5) Attaching files:

The mail command does not provide an option for attaching files.

There is a workaround for attaching files using the uuencode command. Pipe the output of uuencode command for attaching files.
 # uuencode attachment-file attachment-file | mail -s "Mail subject" "to-user@example.com" < somefile.txt

Working with Mailbox in the server

1) To start the Mail program and list the messages in your mailbox:

# mail
The mail command lists every messages in your system mailbox. The mail system then displays the mailbox prompt (?) to indicate waiting for input.

When you see this prompt, enter any mailbox subcommand. To see a list of subcommands, type:
?

Another way of viewing the emails is using the -f option. This is shown below:
# mail -f /var/spool/mail/user
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/user": 2 messages 2 new
>N  1 root@hostname  Tue May 17 00:00  21/1013  "Mail subject 1"
 N  2 root@hostname  Wed May 18 00:00  21/1053  "Mail subject 2"
&
From the above output, you can see that, it displays the from-address, date and subject of the emails in the inbox. It also displays the ampersand (&) prompt at the end. To go back to the main prompt, type CTRL+z or CTRL+d depending on your operating system and press enter. The ampersand prompt allows you to read, reply, navigate and delete the emails.

2. Reading an email.

To read the Nth email, just enter the mail number at the ampersand prompt and press enter. This is shown below:
> mail -f /var/spool/mail/user

Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/user": 2 messages 2 new
>N  1 root@hostname  Tue May 17 00:00  21/1013  "Mail subject 1"
 N  2 root@hostname  Wed May 18 00:00  21/1053  "Mail subject 2"
&2
Message 2:
From root@hostname  Wed May 18 00:00  21/1053
---------------
Subject: Mail subject 2
------------

This displays the second email details.

3. Navigating through inbox emails. 

To go to the next email, enter the + symbol. To go back to the previous email, enter the - symbol at the ampersand prompt.
&-
Message 1:
From root@hostname  Tue May 17 00:00  21/1013
---------------
Subject: Mail subject 1
------------

4. Replying email. 

Once you have read an email, you can give reply to the mail by typing "reply" and pressing enter.
&reply
To: root@hostname
    root@hostname
Subject: Re: Mail subject1

5. Deleting emails. 

You can delete a read email by typing the d and pressing enter. You can also specify the email numbers to d option for deleting them.
To delete read email
&d
To delete emails 1 and 2
&d 1 2
To delete range emails from 10 to 30
&d 10-30
To delete all emails in the mbox (mail box)
&d *

Wednesday 23 April 2014

How can I send doc-files for a PMR ?

Question

How can I send doc-files for a Problem Management Report (PMR)?
Please follow one of the convenient methods below.

Answer

To diagnose or identify a problem, it is sometimes necessary to provide Technical Support with data and information from your system. In addition, Technical Support might also need to provide you with tools or utilities to be used in problem determination. You can submit files using one of following methods to help speed problem diagnosis:
  • IBM Support Assistant (ISA)
  • Electronic Service Request (ESR)
  • FTP to the Enhanced Customer Data Repository (ECuRep)

You can also receive files from IBM Technical Support with ECuRep.

Notes:
  • Do not submit files until you have opened a problem record (PMR) using ESR or directly calling the support center.
  • You should compress the files to be transferred using the ZIP or TAR format.
  • For help with ECuRep, see IBM Centralized Customer Data Store Service.
  • If you are a z/OS® client, and would like to compress your datasets, you can download and use the TRSMAIN utility.
  • Your files will be deleted seven (7) days after the PMR is closed.

Collecting and submitting files using ISA and ESR

The IBM Support Assistant provides an interface to the Electronic Service Request (ESR) tool so that you can easily send data to ECuRep and update your PMR when the data arrives. The Support Assistant will also simplify opening the PMR.
To save even more time, the Support Assistant features a data collector that automates the collection of data for common problems you might encounter. Once you collect your data, you can then quickly submit the data with only a few clicks.

Attaching files to a PMR using ESR

The Electronic Service Request (ESR) tool allows you to submit and manage Problem Management Records on demand. For more information, see Using the ESR tool for managing PMRs.

Customers that are registered and on an authorized caller list:
  1. Sign onto the ESR tool.
  2. On the Welcome page, enter the PMR number in the Enter a report number field and click Go.
  3. Scroll down to the Attach Relevant File field.
  4. Click Browse to locate the log or trace file that you want to submit to IBM Support.
  5. Click Submit to transfer your file to IBM Technical Support through FTP (ECuRep) and associated with this PMR.

Uploading files directly to ECuRep using FTP

The ECuRep FTP site is the replacement for the old testcase FTP site. To submit files using FTP, you will need your Branch and Country code associated with the PMR record. Your Branch and Country code is part of the PMR record identifier; also known as the PMR number. See PMR naming convention in step 6.

How to submit files to the FTP server:
  1. From a command prompt, terminal window, or FTP client, FTP to the following site:ftp ftp.ecurep.ibm.com
  2. Login as anonymous.
  3. Enter your e-mail address as the password.
  4. You must change to /toibm/tivoli.

    For example:cd /toibm/tivoli
  5. Enter the following command to enable binary mode for the FTP session:binary
  6. Caution: The file must use this format to be associated with the PMR; this is the complete PMR record number. Using any other file name will cause the file to be deleted.

    Enter your PMR record information and file type:
    xxxxx.bbb.ccc.yyy.zzz Where,
    xxxxx   is the PMR number
    bbb is the Branch
    ccc is the Country code
    yyy is a unique file name
    zzz is the file type or file extension

    Example 1:12345.055.000.logdata.zip
    Example 2:12345.055.000.traces_April_4.zip

    Note: If possible, to reduce the upload time, you should compress the file to be transferred using ZIP or TAR format.
  7. Enter the following command to put the file on the server:put file_name
    Example: put 12345.055.000.traces_april_4.zip
  8. Enter the following command to end your FTP session:quit
Notes:
  • If you have firewall restrictions, you might need to enter the external IP address for the ECuRep FTP server, which is 192.109.81.7, to access the server.
  • IBM technical support representatives can provide information back to you through FTP in a different directory. For more details, see Receiving files from IBM Technical Support.
  • You can send a file (for example, using the put or mput command), but you cannot update it. So, you will need to create a new file with a unique name. Include your PMR number as part of the file name.
Learn more about Secure FTP.

Receiving files from IBM Technical Support

Occasionally IBM Technical Support needs to make files available for customer download. In the event that you need to pull a file from the IBM FTP site, use the following instructions and the exact directory and filename name provided by your IBM support representative:
  1. From a command prompt, terminal window, or FTP client, FTP to the following site:ftp ftp.ecurep.ibm.com
  2. Login as anonymous
  3. Enter your e-mail address as the password.
  4. Change your directory to the /fromibm/tivoli directory by entering the following command:cd /fromibm/tivoli
  5. Enter the following command to enable binary mode for the FTP session:binary
  6. Enter the following command to download the data from the server:get file_name
  7. Enter the following command to end your FTP session:quit

Tuesday 8 April 2014

AIX LifeCycle Announcement - changes

Support lifecycle notice

  • AIX 7.1 Technology Level 1
  • AIX 6.1 Technology Level 7

IBM made a new announcement regarding TL/SP lifecycle support of AIX on Feb 25th 2014. The key point is that AIX 6.1 TL7 and AIX 7.1 TL1 reach end-of-support effective 31st Oct 2014. The basic support policy for AIX is that they are supported "for the life" of the release. One a TL level reaches "end of life (EOL)" an update to a newer TL may be required in order top receive a fix or ifix.

To check your current AIX level run "oslevel -s". To verify this oslevel, as well as see the history of probable TL/SP updates use: "lslpp -h bos.rte.install" IBM announces the following schedules to help you plan for future upgrades to your AIX operating system. These plans are subject to change without notice.

AIX Technology Levels are supported for how to, usage, and problem identification for the entire life of the release. However, all Technology Levels have a limited support window for corrective service. If a fix is needed, you may be required to upgrade to a more current Technology Level to receive generally available fixes or interim fixes. IBM recommends you take a moment to verify your current service level. Simply run the oslevel -rcommand.

AIX 7.1 Technology Level 1 (7100-01)

After October 31, 2014, IBM will no longer provide generally available fixes or interim fixes for new defects on systems at AIX 7100-01. This applies to all Service Packs within TL1. Please plan to upgrade to a newer Technology Level at your earliest convenience.

AIX 6.1 Technology Level 7 (6100-07)

After October 31, 2014, IBM will no longer provide generally available fixes or interim fixes for new defects on systems at AIX 6100-07. This applies to all Service Packs within TL7. Please plan to upgrade to a newer Technology Level at your earliest convenience.

AIX 7.1 Technology Level 0 and AIX 6.1 Technology Level 0 through 6

As a reminder, IBM is no longer providing generally available fixes or interim fixes for new defects on systems at AIX 7100-00, 6100-00, 6100-01, 6100-02, 6100-03, 6100-04, 6100-05, or 6100-06.

Best Practices

Having a good service strategy for maintaining your AIX operating system is one way to keep your system fully operational. IBM provides strategy planning advice at the Power support site at http://www.ibm.com/systems/support/power. Look for the Best Practices link to find valuable guidance information including such documents as the IBM AIX Operating System Service Strategy Details and Best Practices.

TL Lifecycle

A new document has been provided with the AIX TL Lifecycle information IBM AIX Support Lifecycle Information.

Wednesday 2 April 2014

Linux, AIX OS Return Codes

 Return Codes:

 Linux AIX OS Return Codes
The exit status or return code of a process in computer programming is a small number passed from a child process (or callee) to a parent process (or caller) when it has finished executing a specific procedure or delegated task. In DOS, this may be referred to as an errorlevel.

When computer programs are executed, the operating system creates an abstract entity called a process in which the book-keeping for that program is maintained. In multitasking operating systems such as Unix or Linux, new processes can be created by active processes.

The process that spawns another is called a parent process, while those created are child processes. Child processes run concurrently with the parent process.

 The technique of spawning child processes is used to delegate some work to a child process when there is no reason to stop the execution of the parent. When the child finishes executing, it exits by calling the exit system call. This system call facilitates passing the exit status code back to the parent, which can retrieve this value using the wait system call.

There is no  straight way to get return code when it come to Linux/AIX operating systems.I found indirect method. Always 0 = Success anything else is an error.

Note: The codes are different for Linux and AIX

Linux:

Commmand: # perl -le 'print $!+0, "\t", $!++ for 0..127'
0
1       Operation not permitted
2       No such file or directory
3       No such process
4       Interrupted system call
5       Input/output error
6       No such device or address
7       Argument list too long
8       Exec format error
9       Bad file descriptor
10      No child processes
11      Resource temporarily unavailable
12      Cannot allocate memory
13      Permission denied
14      Bad address
15      Block device required
16      Device or resource busy
17      File exists
18      Invalid cross-device link
19      No such device
20      Not a directory
21      Is a directory
22      Invalid argument
23      Too many open files in system
24      Too many open files
25      Inappropriate ioctl for device
26      Text file busy
27      File too large
28      No space left on device
29      Illegal seek
30      Read-only file system
31      Too many links
32      Broken pipe
33      Numerical argument out of domain
34      Numerical result out of range
35      Resource deadlock avoided
36      File name too long
37      No locks available
38      Function not implemented
39      Directory not empty
40      Too many levels of symbolic links
41      Unknown error 41
42      No message of desired type
43      Identifier removed
44      Channel number out of range
45      Level 2 not synchronized
46      Level 3 halted
47      Level 3 reset
48      Link number out of range
49      Protocol driver not attached
50      No CSI structure available
51      Level 2 halted
52      Invalid exchange
53      Invalid request descriptor
54      Exchange full
55      No anode
56      Invalid request code
57      Invalid slot
58      Unknown error 58
59      Bad font file format
60      Device not a stream
61      No data available
62      Timer expired
63      Out of streams resources
64      Machine is not on the network
65      Package not installed
66      Object is remote
67      Link has been severed
68      Advertise error
69      Srmount error
70      Communication error on send
71      Protocol error
72      Multihop attempted
73      RFS specific error
74      Bad message
75      Value too large for defined data type
76      Name not unique on network
77      File descriptor in bad state
78      Remote address changed
79      Can not access a needed shared library
80      Accessing a corrupted shared library
81      .lib section in a.out corrupted
82      Attempting to link in too many shared libraries
83      Cannot exec a shared library directly
84      Invalid or incomplete multibyte or wide character
85      Interrupted system call should be restarted
86      Streams pipe error
87      Too many users
88      Socket operation on non-socket
89      Destination address required
90      Message too long
91      Protocol wrong type for socket
92      Protocol not available
93      Protocol not supported
94      Socket type not supported
95      Operation not supported
96      Protocol family not supported
97      Address family not supported by protocol
98      Address already in use
99      Cannot assign requested address
100     Network is down
101     Network is unreachable
102     Network dropped connection on reset
103     Software caused connection abort
104     Connection reset by peer
105     No buffer space available
106     Transport endpoint is already connected
107     Transport endpoint is not connected
108     Cannot send after transport endpoint shutdown
109     Too many references: cannot splice
110     Connection timed out
111     Connection refused
112     Host is down
113     No route to host
114     Operation already in progress
115     Operation now in progress
116     Stale NFS file handle
117     Structure needs cleaning
118     Not a XENIX named type file
119     No XENIX semaphores available
120     Is a named type file
121     Remote I/O error
122     Disk quota exceeded
123     No medium found
124     Wrong medium type
125     Operation canceled
126     Required key not available
127     Key has expired

 AIX:  

Commmand: # perl -le 'print $!+0, "\t", $!++ for 0..127'
0
1       Not owner
2       No such file or directory
3       No such process
4       Interrupted system call
5       I/O error
6       No such device or address
7       Arg list too long
8       Exec format error
9       Bad file number
10      No child processes
11      Resource temporarily unavailable
12      Not enough space
13      Permission denied
14      Bad address
15      Block device required
16      Device busy
17      File exists
18      Cross-device link
19      No such device
20      Not a directory
21      Is a directory
22      Invalid argument
23      File table overflow
24      Too many open files
25      Not a typewriter
26      Text file busy
27      File too large
28      No space left on device
29      Illegal seek
30      Read-only file system
31      Too many links
32      Broken pipe
33      Argument out of domain
34      Result too large
35      No message of desired type
36      Identifier removed
37      Channel number out of range
38      Level 2 not synchronized
39      Level 3 halted
40      Level 3 reset
41      Link number out of range
42      Protocol driver not attached
43      No CSI structure available
44      Level 2 halted
45      Deadlock condition if locked
46      Device not ready
47      Write-protected media
48      Unformatted or incompatible media
49      No locks available
50      Cannot Establish Connection
51      Connection Down
52      Missing file or filesystem
53      Requests blocked by Administrator
54      Operation would block
55      Operation now in progress
56      Operation already in progress
57      Socket operation on non-socket
58      Destination address required
59      Message too long
60      Protocol wrong type for socket
61      Protocol not available
62      Protocol not supported
63      Socket type not supported
64      Operation not supported on socket
65      Protocol family not supported
66      Addr family not supported by protocol
67      Address already in use
68      Can't assign requested address
69      Network is down
70      Network is unreachable
71      Network dropped connection on reset
72      Software caused connection abort
73      Connection reset by peer
74      No buffer space available
75      Socket is already connected
76      Socket is not connected
77      Can't send after socket shutdown
78      Connection timed out
79      Connection refused
80      Host is down
81      No route to host
82      Restart the system call
83      Too many processes
84      Too many users
85      Too many levels of symbolic links
86      File name too long
87      Directory not empty
88      Disk quota exceeded
89      Invalid file system control data detected
90      For future use
91      For future use
92      For future use
93      Item is not local to host
94      For future use
95      For future use
96      For future use
97      For future use
98      For future use
99      For future use
100     For future use
101     For future use
102     For future use
103     For future use
104     For future use
105     For future use
106     For future use
107     For future use
108     For future use
109     Function not implemented
110     Media surface error
111     I/O completed, but needs relocation
112     No attribute found
113     Security Authentication Denied
114     Not a Trusted Program
115     Too many references: can't splice
116     Invalid wide character
117     Asynchronous I/O cancelled
118     Out of STREAMS resources
119     System call timed out
120     Next message has wrong type
121     Error in protocol
122     No message on stream head read q
123     fd not associated with a stream
124     Unsupported attribute value
125     Multihop is not allowed
126     The server link has been severed
127     Value too large to be stored in data type