OPS435 Test1 Practice - Bash
You need to be able to write a short script using constructs and utilities we've discussed in the course so far. These exercises should be helpful to you as practice to reinforce what you already learned during the semester.
Contents
Variables
Email Apache status
Write a script that will email the number of apache processes currently running to admin@yourdomain.com. The syntax of the mail command is:
mail admin@yourdomain.com -s "Your subject" "body of message"
One line of the output of the ps command looks like this:
1030 ? Ssl 0:00 /usr/bin/apache
You can get the current date with the date command.
Your script should count the number of apache processes running, and send the admin an email with a body like this: "There are now (2016-02-22 14:21) 3 apache processes running".
Conditions
Test PATH
Write a script that will check whether the current user's path variable contains /sbin. If it does - the script will print "Your current user (#) is likely an administrator". If it doesn't - it will print "Your current user (#) is likely not an administrator". The # should be replaced with the user's UID which you can obtain with the id -a command.
Get subnet mask
The following is a sample output of the ip address command:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fc:aa:14:c7:86:11 brd ff:ff:ff:ff:ff:ff inet 10.0.0.4/24 brd 10.0.0.255 scope global eth2 valid_lft forever preferred_lft forever inet6 fe80::feaa:14ff:fec7:8611/64 scope link valid_lft forever preferred_lft forever
Write a script that will check whether any interface has the IP address 10.0.0.4 and if it does - it will print the subnet mask used with that interface (subnet mask or bit length, whatever you prefer). If it doesn't - it will print a message saying so.
Loops
Move all files
Write a script that will move all the files from the current directory to /data/backup/. If the script encouters an error for any reason (e.g. permission denied) it should stop and print the message "Failed to move the file ABC, move stopped!" where ABC should be the name of the file that failed to move.
Fancy ls
Write a script that will list the contents of the present working directory. Every directory in the PWD should be printed like this (with the <> signs): <dirctoryname> and every file in the PWD should be printed like this (with the double quotes): "filename" Note that the "test -d" command will return true when applied to a directory and false otherwise.
Resize images
This is the syntax for the convert command to resize an image original.jpg to a new image resized.jpg which is 1024 by 768 pixels large:
convert original.jpg -resize 1024x768 resized.jpg
Write a script that will go through all the images in the current directory and make resized (1024x768) versions of each of them. Each existing image has a .jpg extension. New images should have a -small suffix. For example original.jpg should get a pair original-small.jpg
Write HTML for images
In the current directory you have a pile of jpg images. You want to generate some code to put them all in a webpage. The HTML to show one image looks like this (the quotes around the filename can be single or double quotes):
<img src="imagefilename.jpg" />
Write the script that will generate one big HTML file with an <img> tag for every image in the current directory.
Write HTML for small images with links
This one is pretty advanced, but take it on if you want a challenge.
The same as above, but the current directory has two types of images: regular sized and small. Your generated HTML should look like this (again - either single or double quotes are fine for HTML):
<a href="imagefilename.jpg"><img src="imagefilename-small.jpg" /></a>