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:

Example:

dandrear V1WW Lab Assign. 2-1 Email format for questions

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-VM setup.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 done action statement(s) 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