Intro to Linux Shell Scripting

Post on 19-Jan-2015

3.820 views 1 download

Tags:

description

Slides for "Intro to Linux Shell Scripting" given at the Hoosier Educational Computer Coordindator\'s meeting, Indianapolis, 90/13/2009

Transcript of Intro to Linux Shell Scripting

Intro to Shell Scripting

Vern CederCanterbury School

Shell Scripting

An Introduction to Linux Shell Scripting

Vern CederCanterbury School, Fort Wayne

Intro to Shell Scripting

Vern CederCanterbury School

This talk ISN'T for

# Experienced shell scripters

# People who own T­shirts saying “Go away or I will replace you with a very small shell script”

# Anyone with a favorite shell hack they MUST share... ;)

Intro to Shell Scripting

Vern CederCanterbury School

This talk is for you if...

# You can open a terminal

# You can type

# You're interested in how to combine those two things to make your life easier 

Intro to Shell Scripting

Vern CederCanterbury School

What's Coming

# Why use the shell?

# Basic shell commands

# Combining shell commands

# Creating simple scripts

# Automation with cron

Intro to Shell Scripting

Vern CederCanterbury School

Do you...

Intro to Shell Scripting

Vern CederCanterbury School

 $ Need to manage computers not on your desk?

$ Need to perform complex operations, on lots of files?

$ Need to repeat the same operations on a lot of machines?

$ Wish that some of this routine stuff could just happen?

Intro to Shell Scripting

Vern CederCanterbury School

What's a “shell”?

# A program that uses (text) commands to talk to the OS

# DOS (e.g.)

# sh, bash, csh, ksh, zsh, etc...

# This talk will assume bash

Intro to Shell Scripting

Vern CederCanterbury School

Basic Shell Commands

# Files – ls, cp, mv, rm, mkdir

# Access – chmod, chown

# Disks – df, mount 

# Processes – ps, kill, fg, bg

# Network – ifconfig, ping, tracepath

Intro to Shell Scripting

Vern CederCanterbury School

Take ls, for example

# ls   

# ls ­l

# ls ­a

# ls ­t

# ls ­R

# ls ­latR

list files

list more info

list ALL

list by date

list Recursive

or combine

Intro to Shell Scripting

Vern CederCanterbury School

More file commands

# cp a b  

# mv a b

# rm a

# rm ­rf a

copy files

move (rename)

delete 

remove EVERYTHING (danger, danger)

Intro to Shell Scripting

Vern CederCanterbury School

Access commands

# chown user:group a  

# chmod ugo+rwx a

change file owner

change permissions

Intro to Shell Scripting

Vern CederCanterbury School

disk commands

# df   

# du /folder

# mount

get free space

get amount used

show/change disks mounted

Intro to Shell Scripting

Vern CederCanterbury School

process commands

# ps ax  

# kill processid

# fg 

# bg 

show processes

kill a process

foreground

background

Intro to Shell Scripting

Vern CederCanterbury School

network commands

# ifconfig  

# ping

# tracepath 

show interfaces

ping a host

follow a packet

Intro to Shell Scripting

Vern CederCanterbury School

So you can...

# Manage files

# Monitor disks

# Control user access

# Manage/debug network connections

Intro to Shell Scripting

Vern CederCanterbury School

DANGER! 

You can also...

Completely destroy your system

Don't experiment/practice as root!

Intro to Shell Scripting

Vern CederCanterbury School

But how do you know what does what?

# Man – the best way to find out what a command does

# Apropos – the way to find the right command

# tldp.org – man pages and howto's

# Google ;) 

Intro to Shell Scripting

Vern CederCanterbury School

So?

How is this better than using a file manager?

# Powerful – you can do ANYTHING

# Remote – you can do it from ANYWHERE

# “Combinable” (that's next)

Intro to Shell Scripting

Vern CederCanterbury School

The “unix idea”

# Small, specific utilities

# Text input/output

# “pipes” to connect one utility to another

Intro to Shell Scripting

Vern CederCanterbury School

Commands to pull it all together

# cat   

# grep 

# cut

# sort

# uniq

# head, tail

# more, less

dump file

find a pattern

cut out a field

sort

remove dupes

get part of file

page through file

Intro to Shell Scripting

Vern CederCanterbury School

Introducing the “pipe”

# | connects the output of one command to the input of another

# > (and >>) puts the output into a file

# < puts a file to input

Intro to Shell Scripting

Vern CederCanterbury School

For example...

Find out who is hogging the home disk...

# du 

# sort 

# tail 

# du ­cks * | sort ­rn | head

Intro to Shell Scripting

Vern CederCanterbury School

Another example...Who's tried to log into your box?

# cat 

# grep 

# cut 

# sort 

# uniq 

Intro to Shell Scripting

Vern CederCanterbury School

cat /var/log/auth.log | grep "Failed password" | grep ­v "invalid" | cut ­d " " ­f 9,11 | sort | uniq

Intro to Shell Scripting

Vern CederCanterbury School

Scripts

# To avoid retyping (and sometimes refiguring out)

# To handle more complex chores

Intro to Shell Scripting

Vern CederCanterbury School

Creating a simple script

# Text file (text editor)

# The “shebang” line

# Shell commands

# Make it executable

Intro to Shell Scripting

Vern CederCanterbury School

“space hog” as script

#!/bin/bash

du ­cks $1 | sort ­rn | head

Intro to Shell Scripting

Vern CederCanterbury School

“login finder” as script

Login finder as a script

cat $1 | grep "Failed password" \ | grep ­v "invalid" | \

cut ­d " " ­f 9,11 |grep $2 | \

sort | uniq

Intro to Shell Scripting

Vern CederCanterbury School

What I didn't cover(a very partial list)

# find

# tar

# environment vars

# echo 

# sleep 

# editors 

# Sed & awk

# cron & crontab

# loops 

# if 

# test ( [ ] )

Intro to Shell Scripting

Vern CederCanterbury School

But what about automation?

What if you need to repeat the same script every month? Every week? Every day? Every hour? Every minute?

Intro to Shell Scripting

Vern CederCanterbury School

Automating with cron

# cron lets you run scripts at any time, as any user

Intro to Shell Scripting

Vern CederCanterbury School

Print Resources

# Classic Shell Scripting, Robbins & Beebe, O'Reilly

# Think Linux, Jon Lasser, QUE

# UNIX Hints and Hacks, Kirk Waingrow, QUE

# Linux in a Nutshell, Ellen Siever, et al. O'Reilly

# Many books on Linux/UNIX automation and administration

Intro to Shell Scripting

Vern CederCanterbury School

Web Resources

# See http://tech.canterburyschool.org/tech/shell 

# Google “linux shell scripting” or the like

Intro to Shell Scripting

Vern CederCanterbury School

Video Resources

# http://video.google.com 

Search for “linux shell scripting tutorial”