Você está na página 1de 37

UNIX Shell Scripting

22-24 Jul 2013


by
Raguraman Kannan (40214652)

Day - 1

Topics
About UNIX
UNIX OS
Files, Process and Directory
Shell Anatomy
List Commands
Directory Commands
Search and Control Commands

About UNIX
What is Unix
UNIX is a powerful, portable, multi-tasking and multi-user computer operating system

Unix Advantage
Unix is more flexible and can be installed on many different types of machines, including mainframe computers, supercomputers and micro-computers.
Unix is more stable and does not go down as often as Windows does, therefore requires less
administration and maintenance.
Unix has greater built-in security and permissions
Software upgrade do not require Hardware upgrade/pre-requisites

Popular Unix Flavours


Sun Solaris, HP-UX, GNU/Linux, and MacOS X

UNIX OS
Unix OS:
UNIX operating system is made up of three parts; the kernel, the shell and the programs.

Kernel
The kernel of UNIX is the hub of the operating system: it allocates time and memory to
programs and handles the files store and communications in response to system calls.

Shell
The shell acts as an interface between the user and the kernel
The shell is a command line interpreter(CLI)
Key Flavor's : Bourne Shell, Bash Shell and Korn Shell

Program
The commands are themselves programs
Multiple commands can be combined as a script

Unix Files, Process and Directory


Files and processes
Everything in UNIX is either a file or a process.

Process
A process is an executing program identified by a unique PID (process identifier).

File
A file is a collection of data. They are created by users using text editors, running
compilers etc.

Directory Structure
The file-system is arranged in a hierarchical structure, like an inverted tree. The top of the
hierarchy is traditionally called root (written as a slash / )

Anatomy and Commands


Anatomy of UNIX Commands:

Basic Commands:
List File/Directory : To find out what is in your home directory, type
% ls

% ls -all

Commands (cont.)
Directory Commands:

Change Directory

File Properties Commands:

% ls -l filename

% cd directory

Make New Directory


% mkdir directory

Seeing Permissions

Changing Permissions
% chmod nnn filename
Where n, a digit from 0 to 7

Remove Directory
%rmdir directory

Print Working (Show Current) Directory


% pwd

Commands (cont.)
File Manipulation Commands:

Display File Contents

Variable Substitution:

% set var

% cat filename

File Copy

Move (Rename)

Remove (Delete)
% rm <filename>

Expressing a Value
% $var

% mv <oldname> <newname>

Assigning a Value
% set var = value

% cp <source> <destination>

Creating a Variable

Displaying a Value
% echo $var

Commands (cont.)
I/O Commands:

Unix treats every device as a file


In effect, terminal and keyboard can be treated as files

Keyboard is an input file

Terminal monitor is an output file

Unix treats every device as a file

Every program has three default files stdin, stdout, and stderr

These files are respectively numbered as 0, 1, and 2


command 1>&2 > tmp.txt

Search Commands:

Search a string in a file


% grep apple fruitlist.txt

Commands (cont.)
Control Constructs:
The flow of control within Shell scripts is done through constructs
If..Then..Elif..Else..

Do..while..
while list

if <> then

do list

elfi <> then

done

else
fi
Example
#!/bin/sh
if [ "$1" = "1" ]
then
echo "Parameter value is 1"
elif [ "$1" = "2" ]
then
echo "Parameter value is 2"
elif [ "$1" = "3" ]
then
echo "Parameter value is 3"
else
echo "Parameter value is $1"
fi

Example:
#!/bin/sh
count=$1
while [ $count -gt 0 ]
do
count=$(expr $count -1)
done

Commands (cont.)
Control Constructs:
For

for variable in word ...


do list
done

Example:

Case
case word in
pattern) list ;;
...
esac

Example:
#!/bin/sh
fruitlist="Apple Pear Tomato Peach Grape"
for fruit in $fruitlist
do
if [ "$fruit" = "Tomato" ] || [ "$fruit" = "Peach" ]
then
echo "I like ${fruit}es"
else
echo "I like ${fruit}s"
fi
done

!#/bin/sh
case $1
in
1) echo 'First Choice';;
2) echo 'Second Choice';;
*) echo 'Other Choice';;
esac

Commands (cont.)
Functions:

The syntax of an SH function is defined as follows:

Anatomy:

Shell assignment
#!/bin/sh

name() {
commands

Variable declaration
var1=Hello World;

}
Control statements

Example:
printlog() {

if [ "$1" = " Hello World " ]

echo "$1"

then

echo $1"
fi

Note: The function has to be called to get executed


Exit status
exit 0

Day - 2

Topics
vi Editor
FTP
SSH (including SCP and SFTP)
Unix Mailer - mailx
Registering a Host Program
Reading a DB value by launching SQL Plus
Executing a DB Procedure

Vi Editor
vi Editor:

vi is a screen-oriented text editor originally created for the Unix operating


system

Inbound/Outbound File Transfer - FTP


FTP:
File Transfer Protocol (FTP) is a network protocol used to copy a file from one computer
to another over the Internet or LAN
Basic Commands
Open connect to remote server FTP port
open <remote_machine(Hostname)/IP>
lcd Local current directory in the remote
server
pwd present working directory in the local
server

FTP (cont)

put
put <filename>
mput <filename*.*>

get
get <filename>
mget <filename*.*>

Transfer Mode
ascii For text file like data files and Shell Scripts
bin

For executable like .rdf, .fmx etc.

SSH
SSH:

SSH, which is an acronym for Secure SHell, was designed and created to provide the best security when accessing
another computer remotely.

Not only does it encrypt the session, it also provides better authentication facilities, as well as features like secure file
transfer, X session forwarding, port forwarding.

vs

SSH (cont.)
Secure Copy:
SCP is a means of securely transferring computer files between a local host and a
remote host or between two remote hosts. It is based on the Secure Shell (SSH) protocol.
Copying file to host: scp SourceFile user@host:directory/TargetFile
Copying file from host: scp user@host:directory/SourceFile TargetFile

SFTP:
SFTP is a network protocol that provides file access, file transfer, and file management
functionalities.

Key features :
1.Delete remote file
2.Execute a shell in the remote
3.Interactive

Unix Mailer
mailx:
mailx: An utility to send and receive email. SMTP/mail server setting has to be preconfigured prior to mailx usage
Options:
1.Mail body
2.Attach files
3.Add cc and bcc

Example1:
mailx s Test Mail from Unix System john@abc.com

Example2:
(echo "${MAIL_BODY}" ";uuencode ${FILE1};uuencode ${FILE2}") | mailx -s $
{MAIL_SUBJECT}" "${EMAIL}"

Unix Capabilities in Oracle Apps Environment

Load data file into table through SQL Loader

Connect to DB and get a value e.g. Alert Distribution Mail

Download/Upload file to remote servers for Inbound/Outbound interface


programs

Execute a DB Procedure/Function

Submit a Concurrent Program

Migrate AOL Objects and WF Objects through FNDLOAD and WF Load

Encrypt/Decrypt sensitive data files

Trigger Email

Registering as Host Program


Registering as Host Program
Step 1 : Create a shell script and save in .prog extension
Step 2 : Copy the file to $CUSTOM_TOP/bin
Step 3 : Create as link as follows
ln s $FND_TOP/bin/fndcpesr <filename without extension>

Why fndcpesr? - Otherwise we need to read the concurrent program parameters using cut commands

Step 4 : Create a executable with execution type as Host


Step 5 : Create a concurrent program and attach the executable and create parameters if required

System parameters:
$1

apps_username_pwd [e.g. apps/appspwd]

$2

userid

$3

username

$4

request_id

User parameters:
From $5 to till defined

Registering as Host Program(cont.)


User parameters:

Set Program completion status:

From $5 to till defined

At the end of the script use exit command

Note: Use SHIFT to read vale after $9

For Completed - Success:


exit 0

Example:
APPS_LOGIN=$1

For Completed - Error:

USERID=$2

exit2

USERNAME=$3
REQUESTID=$4

For Completed - Warning:

USER_PARAM1=$5

????????????

USER_PARAM2=$6
USER_PARAM3=$7
USER_PARAM4=$8
USER_PARAM5=$9
SHIFT
USER_PARAM6=$9
SHIFT
USER_PARAM7=$9

Launching SQL Plus


Read DB value thru SQL:

Connect to DB and read a value from the table:


Example:
# Get the Mail subject
MSG_SUBJECT=`sqlplus -s $APPSLOGIN<<!
set heading off
set verify off
set wrap off
set feedback off
set echo off
SELECT REPLACE(REPLACE(message_text,CHR(13),NULL),CHR(10),NULL)
FROM FND_NEW_MESSAGES
WHERE MESSAGE_NAME = XXX_CST_REFRESH';
exit;
!`

Execute DB Procedure
Execute DB Procedure:
sqlplus -s $DB_CONNECT << EOF > ${TEMPFILE0}
SET ECHO OFF
SET VERIFY OFF
SET LINESIZE 10000
SET SERVEROUTPUT ON FORMAT WRAP
DECLARE
lv_file_archive_flag VARCHAR2(5);
BEGIN
dbms_output.enable(100000);
xxx_fx_dly_exch_rate_pkg.submit_daily_req_set( p_user_id

=> '$APPL_USERID',

p_file_archive_flag => lv_file_archive_flag );


dbms_output.put_line (' File Archive Flag :'|| lv_file_archive_flag);
EXCEPTION
when others then
dbms_output.put_line (' Exception raised while calling xxx_bloomberg_exch_rate_pkg.submit_daily_req_set, Error
Message : '||SQLERRM);
END;
/
EXIT;
EOF

Day - 3

Topics
Data load through SQL Loader
CONCSUB Utility
Password less login through SSH
File Encryption/Decryption
Set program status to Complete - Warning

Load data through SQL Loader


Data load through SQL Loader

Examine the data and build the Control file accordingly and load the data into
the table

Example:

cd $CUSTOM_TOP/data
for file in sample*.dat
do
sqlldr userid=$login control=$CUSTOM_TOP/bin/sv_test.ctl data=$CUSTOM_TOP/data/
$file
mv $CUSTOM_TOP/data/$file $CUSTOM_TOP/archive/$file
done

CONCSUB
CONCSUB

Concurrent program can be submitted from Shell script through concsub utility
shipped by Oracle

Example:

cd $FND_PATH
v_concreq=`./CONCSUB $ORA_USER_PASS $APPLN_NAME $RESP_NAME1 $USER_NAME
WAIT=Y CONCURRENT SQLAP "APXMCCDF3" $CARD_PROGRAM_ID ${1}`

SSH Password less Login


SSH Password Less Login steps:

SSH Password-less Login:


SSH provides password less login mechanism which is useful in process
automation and batch processing

Step 1:Generate SSH Keys [both public and private keys]


Step 2:Copy the public key to the remote host
Step 3: Try login

File Encryption / Decryption


File Cryptography

Sensitive data requires file encryption/decryption to maintain security when it is


transferred through a computer network

Public Key Cryptography

PGP/GPG
PGP/GPG
Pretty Good Privacy (PGP) / GNU Privacy Guard is a data encryption and decryption computer
program that provides cryptographic privacy and authentication for data communication.
PGP is a CPU licensed software and GPG is GPL
PGP has got product support and GPG do not have support
PGP is recommended for enterprise level encryption/decryption

Encrypt Command:
/opt/pgp/bin/pgp --encrypt ${FILE_NAME}.txt --output ${FILE_NAME}.pgp --overwrite remove
--passphrase ${PGPPASSPHRASE} -r ${PGP_RECIPIENT}

Decrypt Command:
/opt/pgp/bin/pgp --decrypt --input ${FILE_NAME} --output ${DECRYPT_FILE_NAME}.dat --overwrite
remove --passphrase ${PGPPASSPHRASE}

Host Program Set Program status to Complete Warning


Host Program completion status can be set using exit command.
exit 1

In this case, program status will not set to Complete Error

Work around:
sqlplus -s $p_usr_pwd <<-EOF
set feedback off
declare
l_stat Boolean;
l_session_id Number;
begin
fnd_global.initialize(session_id => l_session_id, user_id => fnd_global.user_id, resp_id => fnd_global.resp_id
, resp_appl_id => fnd_global.resp_appl_id, security_group_id => null
, site_id => null, login_id => null, conc_login_id => null
, prog_appl_id => null, conc_program_id => null, conc_request_id => $p_req_id, conc_priority_request => null);
l_stat := fnd_concurrent.set_completion_status('WARNING','Completed in Warning. Review log for details.');
commit;
end;
/
exit;
EOF

References
Reference URLs

http://www.unix.org

http://www.tutorialspoint.com/unix/

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/Secure_Shell

http://en.wikipedia.org/wiki/Mailx

Q&A

Q&A

Thank You

www.hcl.com

Você também pode gostar