Reading CLI input for script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Reading CLI input for script
# 1  
Old 12-07-2011
Reading CLI input for script

I've always written scripts where the user executes the script and I prompt them for what they want to do.

But I'm trying to write a script where root executes the script 'lock' or its hard-link 'unlock' and the script will passwd -l or passwd -u an account depending on the choice.

What would be my best way to "read" what the user input was at the cli?

So basically I want

xxx@xxx# lock bob
or
xxx@xxx# unlock bob

CHECK if root is executing the script
READ user input at the cli
CHECK if the account exists
CHECK if the account is already locked/unlocked
LOCK/UNLOCK

Thanks

---------- Post updated at 07:25 PM ---------- Previous update was at 06:18 PM ----------

Experimenting with $0 right now. Seems like the right track?
# 2  
Old 12-08-2011
You can check the roots privileges by testing EUID. If EUID==0, then the caller has roots powers.

Check if the account exists: look at /etc/passwd. You can see all users there. /etc/groups stores the groups.

Lock/unlock: create a lock file and test for its existence. You can then even gather other interesting info, like when the user invoked your script (timestamp of lockfile).
# 3  
Old 12-08-2011
Actually what I ended up doing is something like

Code:
if [[ $0 == "lock"]]; then ...

So now if it's true I know the user wants to lock and if it's false I know he wants an unlock.

Makes sense?
# 4  
Old 12-08-2011
Mmmm... ok. But if the user calls the script from current dir, like
Code:
 ./lock

or with full path, like
Code:
 /path/to/lock

your test will fail. Furthermore, you will need 2 scripts, that are actually doing one thing, so if you want to make some changes, you'll have to maintain two files. I would stick it all into one file, and decide whether to lock or unlock with a switch. Then you can create alias in /etc/profle, for example, like:
Code:
 alias 'unlock=/path/to/lockScript -u'

so that you can just call 'unlock' from CL.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read multiple input from CLI :ksh

Hi folks.. i got a requirement to red multiple directories from STDIN and store them to a variable. ex:- echo "Enter directory to add:" echo " Enter directory to add:" read value till there is input and when there is no input close the read loop and store variable into an array ... (1 Reply)
Discussion started by: bangaram
1 Replies

2. Shell Programming and Scripting

Array from cli input

I need to create a bash array from the command line parameters. I only know how to do it when I know the number of parameters. But what do I do when I dont know the number of parameters? (1 Reply)
Discussion started by: locoroco
1 Replies

3. Shell Programming and Scripting

Perl Script Not Reading Input Files Correctly

This is one of the strangest things that's happening to me. I'm writing a new Perl script that is trying to read a file. The file is originally in .mof format, but I also saved the contents into a .txt file. As a simple test, I wrote this: #!/user/bin/perl -w use strict; ... (3 Replies)
Discussion started by: kooshi
3 Replies

4. Shell Programming and Scripting

[SH] Problem reading input in script

Alright, so the goal of my script is to read text from standard input and store it into a file using the ex-editor: so far i've got this, but it doesn't work. #!/bin/s read text ex $1 >> HERE text HERE I don't get any errors either, so i don't know what i'm doing wrong. (7 Replies)
Discussion started by: Bertieboy7
7 Replies

5. Shell Programming and Scripting

awk script - reading input lines

Can I do something like, if($0==/^int.*$/) { print "Declaration" } for an input like: int a=5; If the syntax is right, it is not working for me, but I am not sure about the syntax. Please help. Thanks, Prasanna (1 Reply)
Discussion started by: prasanna1157
1 Replies

6. Shell Programming and Scripting

Reading specific contents from 1 input files and appending it to another input file

Hi guys, I am new to AWK and unix scripting. Please see below my problem and let me know if anyone you can help. I have 2 input files (example given below) Input file 2 is a standard file (it will not change) and we have to get the name (second column after comma) from it and append it... (5 Replies)
Discussion started by: sksahu
5 Replies

7. Shell Programming and Scripting

Script for reading an input file

#!/bin/sh rpt="/export/home/legato/rpt_offsite"/test_eject.tape cat <$rpt while read line do echo $line perform routine done I am trying to read the contents of this file line by line and perform a routine for each line read. The file contents are numbers.. What is wrong with my... (1 Reply)
Discussion started by: gzs553
1 Replies

8. UNIX for Dummies Questions & Answers

Reading input to create a variable in a script?

I would like to prompt for input and then use it as a variable in a script. Something like this. #!/bin/ksh echo "What is your name?: \c" read response echo "Your name is $reply" >file.txt done exit 0 What am I missing? Thanks, (7 Replies)
Discussion started by: darthur
7 Replies

9. Shell Programming and Scripting

reading from input

Hi guys , As you know normally ' read ' statement waits for the user to press enter and then terminates the input ............. Can anyone of u tell me how do i read a single character from input without waiting for the user to press enter ................ Thanks, Nagesh. (1 Reply)
Discussion started by: nageshrc
1 Replies

10. UNIX for Dummies Questions & Answers

Reading Input in a Script

#!/usr/bin/sh echo "Enter reason:" echo "> \c" read $reason $reason >> access.log This doesnt work for me. Can someone tell me how I would read the input from what the person types, and then append that to the log file? Regards (2 Replies)
Discussion started by: alwayslearningunix
2 Replies
Login or Register to Ask a Question