Sponsored Content
Top Forums Shell Programming and Scripting Assigning variable from command outputs to shell Post 302329448 by staze on Saturday 27th of June 2009 11:40:28 PM
Old 06-28-2009
yeah, I figured out id was outputting the "no such user" to stderr just a moment ago.

Your suggestion worked brilliantly.

Thanks!

---------- Post updated at 08:40 PM ---------- Previous update was at 07:42 PM ----------

Incase anyone's interested, here's the "draft 1". It could be streamlined more, and I also plan to add the ability to delete members, and maybe compare the group against the input, and only add/remove those users that differ.

Feel free to use, though, I doubt it's worth much to people other than myself. =)

Code:
#!/bin/bash

#This script will take two arguments, the group name, and the user list. 
#It is recommended that the group be cleared before running this script since
#it will not remove people from the group.

dirnode="/LDAPv3/ldap.example.com"

if [ "$#" != "2" ]; then
echo -e "Usage of the groupadd script: $0 groupname userlist\n"
exit 1
else


echo "The following users do not exist in the directory" > ./non_existant_users.txt
group="$1"
userlist="$2"

echo "Adding users in $userlist to group $group"

read -p 'Enter username with directory write : ' admin
read -p 'Enter password for user : ' -s password

#echo "test user: $admin, test pass: $password"
echo "group: $group, userlist: $userlist"

for user in `cat $userlist`; do
	if ! id -u "$user" >/dev/null 2>&1; then
		echo "User $user does not exist!"
		non_existant="$non_existant $user"
	else
		exists="$exists $user"
	fi
done

for isuser in $exists; do
	#dseditgroup -o checkmember -m $isuser $group
	dseditgroup -o edit -n $dirnode -u $admin -P $password -a $isuser -t user $group
done

for nonuser in $non_existant; do
	echo $nonuser >> ./non_existant_users.txt
done

fi

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Assigning a shell variable as a float

I'm confused as to how to handle floating point numbers in shell scripts. Is there a way to convert a number (string) read into a shell variable so that it can be used as a floating point decimal for calculation purposes? Or am I stuck with integrating C or Perl into my script? Ex: --input ... (3 Replies)
Discussion started by: spieterman
3 Replies

2. Shell Programming and Scripting

Assigning output of command to a variable

Hi, I'm trying to assign the output of a command to a variable and then concat it with another string, however, it keeps overwriting the original string instead of adding on to the end of the string. Contents of test.txt --> This is a test var1="`head -n 1 test.txt`" echo $var1 (This is a... (5 Replies)
Discussion started by: oma04
5 Replies

3. Shell Programming and Scripting

assigning command output to a shell variable

I have the sql file cde.sql with the below contents: abcdefghij abcwhendefothers sdfghj when no one else when others wwhen%others exception when others Now I want to search for the strings containing when others together and ceck whether that does not occur more than once in the... (2 Replies)
Discussion started by: kprattip
2 Replies

4. Shell Programming and Scripting

assigning nawk output to shell variable

Hello friends, I doing the follwing script , but found problem to store it to a shell variable. #! /bin/sh for temp in `find ./dat/vector/ -name '*.file'` do echo $temp nawk -v temp=$temp 'BEGIN{ split(temp, a,"\/"); print a}' done output: ./dat/vector/drf_all_002.file... (6 Replies)
Discussion started by: user_prady
6 Replies

5. Shell Programming and Scripting

Assigning output of command to a variable in shell

hi, I want to assign find command result into some temporary variable: jarPath= find /opt/lotus/notes/ -name $jarFile cho "the jar path $jarPath" where jarPath is temporary variable. Can anybody help on this. Thanks in advance ----Sankar (6 Replies)
Discussion started by: sankar reddy
6 Replies

6. Shell Programming and Scripting

Assigning output of a command to variable

When I run time -p <command>, it outputs: real X.XX user X.XX sys X.XXwhere X.XX is seconds. How I can take just that first number output, the seconds of real time, and assign that to a variable? (9 Replies)
Discussion started by: jeriryan87
9 Replies

7. Shell Programming and Scripting

Assigning command to a variable

I've been searching these forums for a while, but this is my first actual post, so please bear with me :) I'm writing a short script using ksh and am trying to store a command and parameters in a variable. My intention is to issue the command by calling the variable. The command will contain... (4 Replies)
Discussion started by: makodarear
4 Replies

8. Shell Programming and Scripting

assigning fields variables value to shell variable

suppose I have a file named abc.txt.The contents of the file is sited below abc.txt maitree,test,test3 Using awk command can I store these 3 values in 3 different variable and in one single line command of awk. suppose variable a b c is there. I don't want like this a=`awk -F"," '{print... (2 Replies)
Discussion started by: maitree
2 Replies

9. Shell Programming and Scripting

[Solved] Assigning Shell variable

Hello, Need a small help to execute below script. #!/bin/bash . new.txt for no in 3 4 do echo $((uname_$no)) done new.txt contains uname_1="XXXXXX" uname_2="YYYYY" uname_3="ZZZZZ" ......... (6 Replies)
Discussion started by: prasanna2166
6 Replies

10. Solaris

Assigning an expression to a variable in shell script

i am trying to assign the following expression to a variable in Unix shell script and want to use that variable in some other expression. But unable to get the required thing done. Please help with this.... This is the expression which i want to provide as input the variable date '+%y:%m:%d' |... (3 Replies)
Discussion started by: ssk250
3 Replies
dseditgroup(8)						    BSD System Manager's Manual 					    dseditgroup(8)

NAME
dseditgroup -- group record manipulation tool. SYNOPSIS
dseditgroup [options] [parameters] groupname options: -o operation perform (read, create, delete, edit, checkmember) operation with given groupname -p prompt for authentication password -q disables interactive verification -v verbose logging to stdout parameters: -m member username to use for checkmember option -n nodename directory node location of group record -u username authenticate with admin username -P password authentication password -a recordname name of the record to add -d recordname name of the record to delete -t recordtype type of the record to add or delete -T grouptype type of group to create or modify -L maintain ComputerLists in parallel with ComputerGroups -i gid gid to add/replace -g guid GUID to add/replace -S sid SID to add/replace -r realname realname to add/replace -k keyword keyword to add -c comment comment to add/replace -s timetolive seconds to live to add/replace -f n | l change the group's format - 'n' for the new group format and 'l' for the legacy group format DESCRIPTION
dseditgroup allows manipulation of a single named group record on either the default local node or the specified DirectoryService node. For the "read" operation the authentication search policy (/Search node) is consulted. Default behaviour is presented below after a discussion of each operation and the possible parameters. Options and their descriptions: -o operation If "read" then the parameters of the specified groupname will be displayed. This is the default option. The authentication search policy (/Search node) will be used. If "create" then create a group with the specified groupname on either the default local node or the specified DirectoryService node. If "delete" then delete a group with the specified groupname on either the default local node or the specified DirectoryService node. If "edit" then edit a group with the specified groupname on either the default local node or the specified DirectoryService node. If "checkmember" then check if the user specified with -m or current logged in user is a member of the specified groupname. The authentication search policy (/Search node) is used to find the member. The specified node (defaults to the authentication search policy) is used to find the group. If the specified node is not on the authentication search policy the behaviour is undefined. -p You will be prompted for a password to use in conjunction with the specified username. -q This disables interactive verification of replace or delete operations. -v This enables the logging of the DirectoryService API calls and their return codes. Parameters and their descriptions: -m member The username of the account to verify group membership when using -o checkmember -n nodename Directory Service node name such as /LDAPv3/ldap.company.com and whose default value is the local node. "." can also be used to specify the local node. -u username Username of a user that has administrative privileges on this computer. -P password Password to use in conjunction with the specified username. If this is not specified, you will be prompted for a password. -a recordname The name of the record to be added to the group specified by groupname. This name is related to the first record found on the authentication search policy when a search is made with this recordname and the given recordtype. -d recordname The name of the record to be deleted from the group specified by groupname. This name is related to the first record found on the authentication search policy when a search is made with this recordname and the given recordtype. -t recordtype The type of the record to be added to or deleted from the group specified by groupname. Valid values are user, computer, group, or computergroup. -T grouptype The type of the group record to be created or modified as specified by groupname. Valid values are group or computergroup. -L If used with computergroup will also maintain the computerlist if it exists or create it if a computergroup is created. -i gid This is a group id. This will be automatically created if not specified for a create. -g guid This is a text representation of an 128 bit id. This will be automatically created if not specified for a create. -r realname This is a simple text string. -k keyword This is a simple text string. -c comment This is a simple text string. -s timetolive The number of seconds that this record is deemed valid as a cached value. There will be no automatically created default value if not specified for a create. DEFAULT BEHAVIOUR
dseditgroup mygroup This simple version of the command will default to: dseditgroup -o read -n . -u $USER mygroup The output will be the parameters of the "mygroup" group record if the shell user has read access to the local node's group record of name "mygroup". EXAMPLES
dseditgroup extragroup dseditgroup -o read extragroup The attributes of the group extragroup from the local node are displayed. dseditgroup -o create -n /LDAPv3/ldap.company.com -u myusername -P mypassword -r "Extra Group" -c "a nice comment" -s 3600 -k "some keyword" extragroup The group extragroup is created from the node /LDAPv3/ldap.company.com with the realname, comment, timetolive (instead of default of 14400 = 4 hours), and keyword atttribute values given above if the user myusername has supplied a correct password and has write access. dseditgroup -o delete -n /LDAPv3/ldap.company.com -u myusername -P mypassword extragroup The group extragroup is deleted from the node /LDAPv3/ldap.company.com if the user myusername has supplied a correct password and has write access. dseditgroup -o edit -n /LDAPv3/ldap.company.com -u myusername -p -a username -t user extragroup The group extragroup from the node /LDAPv3/ldap.company.com will have the username added if the username is in a user record on the search policy and if the correct password is presented interactively for the user myusername which also need to have write access. dseditgroup -o edit -n /LDAPv3/ldap.company.com -u myusername -P -a mysubgroup -t group extragroup The group extragroup from the node /LDAPv3/ldap.company.com will have the mysubgroup added if the mysubgroup is in a group record on the search policy and if the user myusername has supplied a correct password and has write access. dseditgroup -o edit -n /LDAPv3/ldap.company.com -u myusername -p -d username -t user extragroup The group extragroup from the node /LDAPv3/ldap.company.com will have the username deleted if the correct password is presented interactively for the user myusername which also need to have write access. dseditgroup -o checkmember extragroup Will write out a message specifying if the current user is a member of extragroup on the authentication search policy. dseditgroup -o checkmember -n . extragroup Will write out a message specifying if the current user is a member of extragroup on the local node. dseditgroup -n /LDAPv3/ldap.company.com -o checkmember -m user extragroup Will write out a message specifying if user (found in /Search) is a member of extragroup on the specified node /LDAPv3/ldap.company.com. The specified node /LDAPv3/ldap.company.com needs to be on the authentication search policy for a valid answer. Mac OS March 01 2004 Mac OS
All times are GMT -4. The time now is 09:16 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy