Open main menu

CDOT Wiki β

Changes

OPS245 Scripting Exercises dev

1,732 bytes removed, 21:57, 29 April 2023
no edit summary
== Running scripts from your current directory or another directory or a directory in the $PATH ==
You can run a script from your current directory with ./ followed by the script name (without a space). I.E. '''./script.bash''' or '''./script.py''' Alternatively, if the script is in a directory that is specified in your $PATH environment variable you can execute the script by simply typing the name of the script without the ./. You can view your $PATH variable by issuing the command '''echo $PATH'''.
 
Since the scripts in our course are all located in /home/username/bin (which is part of our $PATH) you can execute them without the preceding ./
== Script Permissions ==
= Exercises =
Make sure you are in your home directory on c7host, and clone the github repo that contains templates for all the Python scripts you need this semester (including the sample hello.bash and hello.py below).
<pre>git clone https://github.com/ops245/python</pre> These are a suggested order. You can do these exercises in any order, and change them in any way you like.* Sample (see below): Create a bash script that will print Hello, then list the contents of the / directory, then print Good Bye.**Create a python script that does the same thing.'''Bash'''<pre>* Create a #!/bin/bash script that will run your other script twice.** Run this new script from different locations# Author: Jason Carman# Date: January 10, and see if it always works. Fix it if it doesn't.2023* Create a bash script to display # Purpose: Print hello, list the contents of /etc/sysconfig/network-scripts/ifcfg-ens33, then print goodbye** Pipe the output to cat*** Pipe that output to cat# Usage: . See if you understand why that doesn't seem to do anything* Create a bash script which will use cat and grep to find the line with BOOTPROTO in /etc/sysconfig/network-scripts/ifcfg-ens33** Modify that script so that it doesn't need cat anymorehello.bash* Create a bash script in which you will create a variable called BP.** Assign to that variable # Print hello on the value BOOTPROTO=screenecho "dhcpHello" ( # List the equal sign and quotes are part contents of the value)./ls / ** Use the cut command to retrieve the part between # Print good bye on the double-quotes (in this case that's: dhcp).screen** Save the result in a variable, and print that variable.echo "Good Bye* Combine the two scripts above into one. The script should tell you what the value of BOOTPROTO from </etc/sysconfig/network-scripts/ifcfg-ens33 is.pre> *Sample (see below): Create a python script that will prompt does the user for the name of the interface they want to search (e.g. ens33), then prompt them for the parameter they wish to seesame thing.**Store the responses from the user in variables and use them to grep the appropriate file for the parameter the user asked for. Display it's current value.''Python'''**Note: As we have not covered conditional statements or loops in python yet, you can assume the user always provides usable responses.<pre>* Use the ls and wc commands to find how many log files there are in #!/varusr/logbin/env python3** Add a grep command to find how many of a certain type of log file there are (e.g. vmware-network log files)# Author: Jason Carman* Use the history and grep commands to find any command you ran in the past that contained a certain keyword (like .sh or cat)# Date: January 10, 2023* Write a bash script which will use # Purpose: Print hello, list the whoamicontents of /, hostname, date, and lvs commands to create a reportprint good bye# Usage .txt file containing all that information/hello.py#** Set it up so that # Import the date os moduleimport os # Print helloprint(in YYYY-MM-DD format'Hello') is in  # List the filename contents of the report, e.g. report-YYYY-MM-DD.txtbin directory* Write a bash script that will ask the user for a process name, will check whether that process is running, and if it is: it will print "The process is running"os. If it isn't: it will print system("The process is not runningls /".) ** Modify that script to include the number of processes with that name that are running.# Print good bye* Write a script that will use a for loop and the cut command to get a list of usernames from the /etc/passwd file and print one username perline.('Good Bye')** For each user: using an if statement check whether the directory /home/thatusername exists and then each line will look like: "user1: home directory does not exist" or "user2: home directory exists".** Instead of checking for /home</thatusername check for the home directory in the passwd file line for that user.pre>