Sudo function


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sudo function
# 8  
Old 01-14-2013
Quote:
Originally Posted by Scott
The shell won't expand variables (like $1) when enclosed in single quotes.
How should I proceed, then?

Thanks.
# 9  
Old 01-14-2013
Move the closing single quote just before $1, or use double quotes.
This User Gave Thanks to Scott For This Post:
# 10  
Old 01-14-2013
Quote:
Originally Posted by Scott
Move the closing single quote just before $1, or use double quotes.
Amazing. Finally got it working!

Only bad thing is I must use quotes if I'm passing any options to my custom functions but hey, much better than before!
Code:
suddo(){
	sudo /bin/bash -c "source ~/.bash_profile ; $1"
}

Example function:

Code:
cache(){
	local OPTIND
	while getopts :sdc opt
		do
			case $opt in
				s) 	echo User Cache:
					peso -d0 -r /Users/****/Library/Caches/com.Huyyyk.client/ | awk '{print $1}'
					;;
					
				d) 	echo System Cache:
					peso -d0 -r /Users/****/Library/Caches/.Huyyyk/ | awk '{print $1}'
					;;
					
				c) 	if [ `id -u` -ne 0 ]
						then	warning "YOU NEED TO BE ROOT IN ORDER TO CLEAR THE CACHE"
								break
					fi
					echo Cache:
					peso -d0 -r /Users/****/Library/Caches/.Huyyyk/ | awk '{print $1 $2 $3}'
					echo
					echo "ARE YOU SURE YOU WANT TO CLEAR THE CACHE?" 
					echo "(y/n)..."
					read -n1 resp
					echo
					echo
					if [ $resp = "y" ]
						then	rm -rf /Users/****/Library/Caches/.Huyyyk/*
								echo "CACHE HAS BEEN CLEARED"
								echo
						else 	echo ABORTED
								echo
					fi
					;;
					
				\?)	echo "Options:	-s: User cache"
					echo "		-d: System cache"
					echo "		-c: Clear cache"
					;;
			esac
		done
}

In order to clear cache as sudo I must type:

Code:
suddo "cache -c"

I need the quotes. As I said though, great improvement.

THANK YOU ALL!!! Smilie
# 11  
Old 01-14-2013
Quote:
In order to clear cache as sudo I must type:
Code:
suddo "cache -c"

You only need those quotes if you use "$1". Using "$@" would not require them.

Code:
$ cat myScript
function suddo1 {
  echo "$0: $1"
}

function suddo2 {
  echo "$0: $@"
}


suddo1 cache -c
suddo2 cache -c

$ ./myScript
suddo1: cache
suddo2: cache -c

But it doesn't matter. It's good practice to use quotes Smilie
This User Gave Thanks to Scott For This Post:
# 12  
Old 01-14-2013
Thanks Scott!!!

This didn't work though:
Code:
suddo(){
	sudo /bin/bash -c "source ~/.bash_profile ; $@"
}

Tried this other and worked. Smilie
Code:
suddo(){
	a=$@
	sudo /bin/bash -c "source ~/.bash_profile ; $a"
}

Quote:
Originally Posted by Scott
You only need those quotes if you use "$1". Using "$@" would not require them.

Code:
$ cat myScript
function suddo1 {
  echo "$0: $1"
}

function suddo2 {
  echo "$0: $@"
}


suddo1 cache -c
suddo2 cache -c

$ ./myScript
suddo1: cache
suddo2: cache -c

But it doesn't matter. It's good practice to use quotes Smilie
# 13  
Old 01-14-2013
In that case, perhaps you could try:
Code:
suddo(){
	sudo /bin/bash -c "source ~/.bash_profile ; $*"
}

But you would still need to use double quotes sometimes...
This User Gave Thanks to Scrutinizer For This Post:
# 14  
Old 01-14-2013
Quote:
Originally Posted by Scrutinizer
In that case, perhaps you could try:
Code:
suddo(){
	sudo /bin/bash -c "source ~/.bash_profile ; $*"
}

But you would still need to use double quotes sometimes...
That does indeed work, thanks!

Does anybody know of somewhere I could look up all ways of using the $?

I mean:

Code:
$1, $2, $9
$!
$@
$*
$?
(I'm sure there's more...)

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Sudo has no access to exported bash function

Hello. I am running leap 15.1 sudo behavior may differ from other distrib. I have a file with functions definition .... function_1 { echo "Hello world" } export -f function_1 This file is sourced by both /etc/bash.bashrc.local and profile.local. So the functions are... (3 Replies)
Discussion started by: jcdole
3 Replies

2. Shell Programming and Scripting

Will files, creaetd in one function of the same script will be recognized in another function?

Dear All. I have a script, which process files one by one. In the script I have two functions. one sftp files to different server the other from existing file create file with different name. My question is: Will sftp function recognize files names , which are created in another... (1 Reply)
Discussion started by: digioleg54
1 Replies

3. Shell Programming and Scripting

sudo: sorry, you must have a tty to run sudo

Hi, Have a need to run the below command as a "karuser" from a java class which will is running as "root" user. When we are trying to run the below command from java code getting the below error. Command: sudo -u karuser -s /bin/bash /bank/karunix/bin/build_cycles.sh Error: sudo: sorry,... (8 Replies)
Discussion started by: Satyak
8 Replies

4. Shell Programming and Scripting

sudo: sorry, you must have a tty to run sudo

Hi All, I running a unix command using sudo option inside shell script. Its working well. But in crontab the same command is not working and its throwing "sudo: sorry, you must have a tty to run sudo". I do not have root permission to add or change settings for my userid. I can not even ask... (9 Replies)
Discussion started by: Apple1221
9 Replies

5. Shell Programming and Scripting

ssh foo.com sudo command - Prompts for sudo password as visible text. Help?

I am writing a BASH script to update a webserver and then restart Apache. It looks basically like this: #!/bin/bash rsync /path/on/local/machine/ foo.com:path/on/remote/machine/ ssh foo.com sudo /etc/init.d/apache2 reloadrsync and ssh don't prompt for a password, because I have DSA encryption... (9 Replies)
Discussion started by: fluoborate
9 Replies

6. AIX

sudo log and sudo auditing

Sudo In AIX, how to find out what commands have been run after a user sudo to another user? for example, user sam run 'sudo -u robert ksh' then run some commands, how can I (as root) find what commands have been run? sudo.log only contains sudo event, no activity logging. (3 Replies)
Discussion started by: jalite19
3 Replies

7. Cybersecurity

sudo /bin/sh or sudo su -

we are looking at changing the way we get root on our network. in our current system if an admin needs root access he just gets the root password and uses an su. some of our staff have decided that a sudo to "/bin/sh" will be easer. some of our staff think a sudo to "su -" will be better. I... (0 Replies)
Discussion started by: robsonde
0 Replies

8. UNIX for Dummies Questions & Answers

Unable to use the Sudo command. "0509-130 Symbol resolution failed for sudo because:"

Hi! I'm very new to unix, so please keep that in mind with the level of language used if you choose to help :D Thanks! When attempting to use sudo on and AIX machine with oslevel 5.1.0.0, I get the following error: exec(): 0509-036 Cannot load program sudo because of the following errors:... (1 Reply)
Discussion started by: Chloe123
1 Replies

9. Shell Programming and Scripting

Passing global variable to a function which is called by another function

Hi , I have three funcions f1, f2 and f3 . f1 calls f2 and f2 calls f3 . I have a global variable "period" which i want to pass to f3 . Can i pass the variable directly in the definition of f3 ? Pls help . sars (4 Replies)
Discussion started by: sars
4 Replies
Login or Register to Ask a Question