Transcript Document

Agenda
Introduction
Administrative Announcements
Link of the Week
Expected Outcomes
This Week’s Topics
Next Week’s Lab Assignment
Break Out Problems
Upcoming Deadlines
Lab assistance, questions, and chat time
Introduction
Instructor
Professor Bob D’Andrea
Software Engineer
Instructor at Franklin University since
2004
Home phone No. 614.898.0457
Cell No. 616.519.5853
[email protected]
Program Chair of Information Security
Mr. Brad Reed
Phone # 614.918.8321
[email protected]
Administrative Announcements
Instructor commitment
Respond daily to student emails.
Post exam and lab assignment grades as quickly as
possible in student grade books.
Post student midterm and final exam status on the
Announcement page after each exam has been received
from the Student Learning Center (SLC).
Office hours
Monday through Friday: 9:00 AM – 9:00 PM
Saturday and Sunday: 9:00 AM – 6:00 PM
Personalized Franklin Live session can be scheduled
on demand by a student needing individual
assistance.
Administrative Announcements
Course Web Site
Were students able to read my comments in the Class
Communication icon?
Attendance
Email and/or call me if you are unable to attend class.
Otherwise, you will be marked “Not Present” and you will
receive an email notice.
cs.franklin.edu server
Everyone will need a login to the cs.franklin.edu machine?
Putty is the prescribed open source interface for this class.
You will use putty to access the cs.franklin.edu machine.
Student lab assignments will be tested under your
itec400/homework directory.
Administrative Announcements
Recorded Franklin Live Sessions
http://cs.franklin.edu/~dandrear/itec400/Winter_2014_UNI
X_Presentations
Franklin Live file name format
-rwx---r-x 1 dandrear faculty 1067008 Apr 3 21:53
Week_One_1_UNIX_ppt.ppt
-rwx---r-x 1 dandrear faculty 887795 Apr 3 21:54
Week_One_1_UNIX.pptx
Each week, a Power Point presentation is used in the
Franklin Live session. These Power Point presentations will
be available on Monday mornings for printing and/or
review prior to the online session.
Administrative Announcements
Email format for completed lab assignments
Email a notification when an assignment is completed and
ready to be graded. The “Subject” line of your email
notification should have the following format:
<User name> <Section Number> <Lab Assig 1-3>
Example: dandrear V1WW Lab Assign. 2-1
Email format for questions
<User name> <Section Number> <Question(s)>
Example: dandrear V1WW Question(s)
Scripts and text file suffix
All scripts and text files shall end with the proper
suffix (e.g. ,sh, .pl, .txt and .cgi).
Homework assistance
Do not solicit help from the Internet for lab assignments. If
caught soliciting assistance from the Internet, Franklin
University will take action against you.
Administrative Announcements
Drop Box
Deposit all lab assignments in the Drop Box. The Drop
Box is located under your Franklin University course
Web page “Communications” tab.
Student drop box documentation link below
http://online.franklin.edu/forms/StudentDropBoxManu
al.doc
/home/user name/itec400/homework
This directory is where your scripts and text files will
reside for grading.
Administrative Announcements
Turnitin.com Assignments
The Light Directory Access Protocol (LDAP) and
Public Domain/Open Source lab assignments must be
submitted to Turnitin.com. Your report will be verified
by Turnitin.com for author originality. If Turnitin.com
indicates that your percentage of originality is 45
percent or greater, I will not grade the paper. I will
recommend that you seek assistance from the Student
Learning Center (SLC).
Administrative Announcements
VMware software
You should receive a Live CD with Knoppix 5.1.1
recorded on it from Franklin University. If you do not
receive this CD, call the Helpdesk. The Knoppix
software can also be downloaded from the course web
page or from the following link:
http://cs.franklin.edu/~blackbue/Knoppix-VMsetup.zip
Creating scripts using Knoppix software
ftp from your Knoppix software to cs.franklin.edu
sftp://[email protected]/home/dandrea
Link of the week
Open Source Software
◦ http://en.wikipedia.org/wiki/Open_source
◦ http://freshmeat.net
◦ http://sourceforge.net
Link of the week
Open Source Software
Definition of Open Source Software.
 Distributed in source code format
 Developed in a public, collaborative manner
 Software is free of charge
 Allows anyone to apply modifications to the
software.
 Who benefits from open source products?
Course expected outcome
Upon successful completion of this course, students
will be able to:
Create non-trivial shell scripts.
Perform appropriate UNIX System Administration
tasks.
Compose non-trivial scripts using Perl programming
language.
Distinguish the roles of Linux and Open Source
software.
Incorporate the make utility appropriately within
programs.
Create an open source presentation of your choice.
Create a CGI script
UNIX Operating System
UNIX comes in a variety of constantly changing
flavors (SUNOS, HP-UX, BSD and Solaris, just to
name a few). Each of these UNIX types will have small
variations from all of the others. This may seem a bit
discouraging at first, but in reality each version of
UNIX has more in common with all of the others than
differences. The ls command, for example, will give a
listing of the current directory in any UNIX
environment. The changes or semantics local to any
particular brand of UNIX should be explained in the
manual pages that come with that particular system.
UNIX Operating System
The purpose of this explanation is not to explore the
differences between different UNIX flavors, but rather
to assume that they are all equivalent and look at how
the different shells behave.
UNIX Operating System
The UNIX operating system comes with many
commands that allows the user to interact with their
computer. UNIX commands are simply programs that
are executed when called for. The usual place for the
storage of these commands is the /usr/bin directory. The
commands that are available on a particular machine
will vary. There is a set number of standard commands
that come with a UNIX system, but there is no limit to
the commands that can be made available.
UNIX Operating System
UNIX, Linux, and HP-UX are all operating systems.
The design of an operating system is to coordinate and
apply the various parts of the computer -- the processor,
the on-board memory, the disk drives, keyboard, video
monitors, and mouse to perform useful tasks. The
operating system is the central most software program
in the machine. It is the glue that connects all of the
internal components, like administer, programmers, and
the users.
UNIX Operating System
The UNIX operating system gives a computer certain
recognizable characteristics. However, it would be
difficult to distinguish between two different
computers, if they were loaded with the same operating
system. If you took two identical computers and
installed different operating systems on each of them,
they would appear completely different to the user.
UNIX Operating System
UNIX was created in the late 1960s, the initial effort
was to provide a multiuser, multitasking system for
programmers to use. The philosophy behind the design
of UNIX operating system was to keep it simple, yet
powerful with utilities that could be assembled together
in a flexible manner to perform a wide variety of tasks.
The UNIX operating system is made up of three
components: The Kernel, the standard utility programs,
and system configuration files.
UNIX Operating System
Kernel
The kernel is the core component of the UNIX
operating system. Basically, the kernel is a software
program that is loaded into memory when the machine
is turned on. The kernel is a memory resident control
program. It controls the allocation of hardware
resources from the time the machine is turned on until
the system is shutdown. The kernel knows what
hardware resources are available (like the processor(s),
the on-board memory, the disk drives, network
interfaces, etc.), and it has the necessary programs to
talk to all the devices connected to it.
UNIX Operating System
General kernel functions performed by the kernel are:
• Managing the machine's memory and allocating
it to each process.
• Scheduling the work done by the CPU so that the
work of each user is carried out as efficiently as
is possible.
• Accomplishing the transfer of data from one part
of the machine to another
• Interpreting and executing instructions from the
shell
• Enforcing file access permissions
UNIX Operating System
Standard utility programs
The standard utility programs include utilities like diff,
which compares the content of two files, and other
more complex utilities that communicate with the
operating system.
UNIX Operating System
System configuration files
The system configuration files are read by the kernel, and
many of the standard utilities to configure the initial
settings for some computer programs. Configuration files
are used for user applications, server processes, and
operating system settings. The files are normally written in
ASCII or UTF-8, depending on the operating system. They
are often referred to as simple databases.
UNIX provides several hundred utility programs, often
referred to as commands.
•Editing
•File maintenance
•Printing
•Sorting
•Programming support
•Online information
UNIX Operating System
User access to a system
Logging into a UNIX system requires two pieces of
information: a user name, and a password. After a user
name and password have been authenticated and
accepted, a UNIX system shell is created for them to
use. The shell’s prompt is usually displayed at the
cursor’s position on your screen. In order to get work
accomplished, you enter commands at this prompt. A
shell program is a command interpreter; it takes each
command or combination of commands and passes
them to the kernel to act on. It then displays the output
from this operation on the screen. There are usually
many shells on a UNIX system, each with its own
unique set of capabilities.
UNIX Operating System
The shells found on the cs.franklin.edu (Einstein)
machine are:
/bin/sh
/bin/bash
/bin/ksh
/bin/tcsh
/bin/csh
The shell is probably the user’s most important
program on a UNIX system. The shell is the interface
between you and the UNIX operating system, and the
man-in-the-middle, kernel.
UNIX Operating System
What is a shell?
Shell programs are designed to fit a specific concept.
They accept a command, interpret the command,
execute the command, and then wait for another
command. The shell displays the “prompt” to notify the
user that it is ready to accept another command.
UNIX Operating System
The shell program recognizes a limited set of
commands, and must be given commands in a way that
it understands. Each shell command consists of a
command name, options, and arguments that are
separated by white space. Similarly, writing a sentence
where it must contain a subject, a verb, and white space
to be a valid. The basic shell command line is:
command name [-options] [arguments]
UNIX Operating System
The command name is the name of the program you
want the shell to execute. The command option usually
is prefixed with a hyphen, which allows you to alter the
behavior of the command. The argument position is the
name of directories, files, or programs that the
command needs to access.
The shell program is executed by the UNIX kernel for
you. A UNIX program is referred to as a process while
the kernel is executing it. The kernel can execute the
same shell program or any other program
simultaneously for many users on a UNIX system, and
each executing copy of the program is an individual
process.
UNIX Operating System
Many basic shell commands are small subroutines built
in to the shell program. The commands that are not
built into the shell require the kernel to start another
process to execute them.
When a non-built-in shell command is executed, the
shell requests the kernel to create a new sub-process
called a process, to perform the command. The child
process lives long enough to execute the command. The
shell waits until for the child process complete before it
accepts the next command.
UNIX Operating System
A shell is an entity that takes input from the user and
deals with the computer rather than have the user deal
directly with the computer. If the user had to deal
directly with the computer he would not get much done
as the computer only understands strings of 1's and 0's.
While this is a bit of a misrepresentation of what the
shell actually does (the idea of an operating system is
neglected) is provide a rough idea that should cause the
reader to be grateful that there is such a thing as a shell.
UNIX Operating System
A good way to visualize a shell program
When a person drives a car, that person doesn't have to
actually adjust every detail that goes along with making
the engine run, or the electronic system controlling all
of the engine timing and so on. All the user (or driver in
this example) needs to know is that D means drive and
that pressing or releasing the accelerator pedal will
make the car go faster or slower. The dashboard would
also be considered part of the shell since pertinent
information relating to the user's involvement in
operating the car is displayed there.
UNIX Operating System
In fact any part of the car that the user has control of
during operation of the car would be considered part of
the shell. I think the idea of what a shell is coming clear
now. It is a program that allows the user to use the
computer without him having to deal directly with it. It
is in a sense a protective layer that prevents the user
and computer from coming into contact with one
another.
To execute script on cs.franklin.edu machine:
./printnum.sh 15
./maxlines.sh
UNIX Operating System
What is parsing?
To parse a command line means to look at each part of
the command line and be able to put the information
into an intelligent format, so that it can be executed by
the computer. Since there variations in how different
shells parse a command line, it can be assumed that the
shell in question is generic. When a user enters a
command line at the prompt, the shell begins by
analyzing the command line. The shell will break the
command line down into small indivisible pieces called
tokens (sometimes they are referred to as atomic).
UNIX Operating System
Each token is then analyzed in terms of its relationship
with the other tokens. This is similar to the human
examination of an English sentence. If a noun is
present, but no verb, the sentence is deemed
incomplete. The shell behaves in much the same matter.
It doesn't only check for missing bits, it also makes sure
that what is there is in correct order. The shell may
have to examine a command line more than once to
collect all of the tokens. Each examination is called a
pass. The reason for multiple passes is that command
lines can be quite complicated, there can be all kinds of
substitutions and considerations made before a solid
conclusion can be made about the command line data.
UNIX Operating System
On each pass the shell will make a required substitution
and then collect the available tokens. Since the
substitutions can be nested (substitutions containing
substitutions), the shell may require several passes to
collect all of the tokens. As stated above, if at this point
in the process the shell determines that the grammar of
the command line is incorrect, an error is displayed to
the user, or else the command is executed. While the
actual order in which the tokens are gathered is
interesting, it is beyond the scope of this course. Where
required (such as aliases) the order of some of the
parsing procedure will be presented.
UNIX Operating System
Shell Variables
One way a shell lets you customize your working
environment is by using shell variables. A shell variable
is an item, known by a name, that represents a value of
some type. As the term “variable” implies, the value of
a shell variable can be changed.
There are two types of shell variables. First, there are
variables that act as off/on switches. Second, there are
variables that store a particular value as a string of
characters.
UNIX Operating System
Why is AWK so important?
It is an excellent filter and report writer. Many UNIX
utilities generates rows and columns of information.
AWK is an excellent tool for processing these rows and
columns, and is easier to use AWK than most
conventional programming languages. It can be
considered to be a pseudo-C interpreter, as it
understands the same arithmetic operators as C. AWK
also has string manipulation functions, so it can search
for particular strings and modify the output. AWK also
has associative arrays, which are incredible useful, and
is a feature most computing languages lack. Associative
arrays can make a complex problem a trivial exercise.
UNIX Operating System
AWK - the original from AT&T
NAWK - A newer, improved version from AT&T
GAWK - The Free Software foundation's version
I suggest you either use NAWK, or GAWK, or convert
your AWK script into PERL using the "a2p" conversion
program which comes with PERL.
UNIX Operating System
Moving Around in UNIX
cd
mkdir
chmod
ls
ls –l
date
ps
rm
who
UNIX Operating System
Shell Set Command
Debugging part of a script:
set -x # activate debugging
# your commands go here...
set +x # stop debugging
UNIX Operating System
set -A is Korn Shell (ksh) specific (not available in
Bash or POSIX SH) and it initializes an array with the
specified value(s).
$ set -A COLORS "red" "green" "blue"
$ print ${COLORS[0]}
red
$ print ${COLORS[1]}
green
$ print ${COLORS[2]}
blue
UNIX Operating System
Shell syntax
$# - Number of positional parameters
$! - Background PID
$? - Return value
$$ - Process PID
$ - Provides the content of a variable ($NUMBER)
$0, $1, $2, $3 … - This syntax represents the positional
parameters on the command line.
./printnum.sh 4
exit 0 – The return values is a number from 0 to 255. A
value of zero (0) indicates a normal exit.
exit 1 - Indicates a failure occurred.
UNIX Operating System
“ “ - Double quotes. Removes special meaning of all
enclosed characters, except $, `, “, and \.
Example: print “The price is $Price.\n”;
(interpolation)
‘
’ - Literal quotes. Removes the special meaning
of all enclosed characters. A single quote cannot appear
within single quotes because a single quote denotes the
end of the string.
` ` - Single Back-Tic quotes. Used for command
substitution.
Example: echo The date is `date` (interpolation)
LINES=`wc -l $ENTRY | cut -c 1-7`
LISTING=`ls -l | cut -f 9`
UNIX Operating System
Syntax format
while [ condition]
do
action statement(s)
done
if [ condition ]
then
action statement(s)
fi
UNIX Operating System
Examples
for name in *
do
action statements
done
while [ "$1" != "" ]
do
# Store the value zero (0) in the variable size.
$size = 0
done
UNIX Operating System
Examples
if [ $# –ne 1 ]
then
echo “Please enter a command line
argument”
fi
logfile="/var/adm/messages"
foreach mon in Sun Mon Tue Wed Thu Fri Sat
do
grep $mon $logfile > $logfile.$mon
done
UNIX Operating System
Example
if [ -d "$1" ]
then
action statement
fi
#Print the new line counts
wc –l - Word count with –l (line option).
Tilde (~) is UNIX shorthand for your home directory
Hands-on-information
Review Lab Assignment 2-1 Simple Shell scripting.
Lab assignments should be recorded on cs.franklin.edu
(cs.franklin.edu) machine in your
“~/itec400/homework” directory.
Demonstrate how to create a file using the “vi” editor.
Execute printnum.sh and maxlines.sh scripts on the
cs.franklin.edu machine.
Lab Assignment 2-1 will be complemented with script
logic. Script logic will be utilized to jump start the lab
assignment. It contains script logic, 70% percent of the
needed coding, and helpful hints to assist your
programming skills. In addition to script logic, you will
receive a Shell and Perl Commands Quick Reference
document in email.
Break Out Problems
Program statement (#!/bin/ksh)
less
ps –ef | wc –l
who | awk ‘{print $1}’ | sort –u | wc –l
ps –ef | awk ‘{print $1}’ |sort –u | wc –l
ps –ef | awk ‘{print $9, $1}’
Shell language syntax: $#
Shell language command: for name in *
Shell language command:
NUMBER=$(($NUMBER - 1))
Shell variable: PATH
Upcoming Deadlines
Lab Assignment 1-1, Obtain a Proctor for Exams, due
January 19, 2014
Lab Assignment 1-2, Install VMware Workstation 8
and Knoppix Virtual Machine, due January 12, 2014
Lab Assignment 1-3, Introduction to Linux, due
January 12, 2014
Lab Assignment 2-1, Simple Shell Scripting, due
January 26, 2014
Lab Assignment 3-1, Advanced Scripting, due February
2, 2014
Read Chapters 1 and 2 in your text book, Essential
System Administration.
Read Module One listed under the course Web site
UNIX Operating System
Questions?
Comments?
Concerns?
After each Franklin Live session, I will remain on the
session to provide assistance unless otherwise
indicated.
Lab assistance, questions, and chat time