Quotation Ugliness
random832 at fastmail.us
random832 at fastmail.us
Wed Nov 26 09:12:25 EST 2014
On Wed, Nov 26, 2014, at 01:04, Tim Daneliuk wrote:
> In this case, I am not trying to write a fullblown language or recover
> from syntax errors. Here's a usecase - I want to know whether I need
> to use a sudo password when the user passes a command on the command line
> of a program:
>
> someprog.py uname && sudo cat /etc/sudoers
>
> vs.
>
> someprog.py uname && echo "sudo cat /etc/suoders"
>
>
> In the first instance, I need the sudo passoword, in the second I don't.
I think first you need to understand how the command line works. Much of
this parsing - including both && and quotes - is handled by the shell
before your program ever sees it.
Imagine someprog.py is this very simple program:
import sys
print("%r" % (sys.argv,))
$ someprog.py uname
['someprog.py', 'uname']
$ someprog.py uname && sudo cat /etc/sudoers
['someprog.py', 'uname']
Password: {sudo executed independent of your program}
$ someprog.py uname && echo "sudo cat /etc/sudoers"
['someprog.py', 'uname']
sudo cat /etc/sudoers {echo executed independent of your program}
$ someprog.py uname "&&" sudo cat /etc/sudoers
['someprog.py', 'uname', '&&', 'sudo', 'cat', '/etc/sudoers']
$ someprog.py uname "&&" echo "sudo cat /etc/sudoers"
['someprog.py', 'uname', '&&', 'echo', 'sudo cat /etc/sudoers']
$ someprog.py 'uname && echo "sudo cat /etc/sudoers"'
['someprog.py', 'uname && echo "sudo cat /etc/sudoers"']
More information about the Python-list
mailing list