From: Baris CUHADAR on
Can anyone explain this unexpected behavior?
all files chmod 755, i've compiled x.py with py_compilefiles,
also tried within python console with "import x"

system: centos 5.4 32bit

This a PATH related problem i think?


[root(a)centos-14 cgi-bin]# ./x.pyc
: command not found
../x.pyc: line 2: syntax error near unexpected token `)'
../x.pyc: line 2: `��)Lc@sdGHdGHdkZeiGHdS(sContent-Type:text/
html'


[root(a)centos-14 cgi-bin]# python x.pyc
Content-Type:text/html


python
2.4.3 (#1, Sep 3 2009, 15:37:12)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)]

--------------------------------------------------------------------------------------------

x.py file content:

#!/usr/bin/env python

print "Content-Type:text/html\n\n"
print "python"
import sys
print sys.version

--------------------------------------------------------------------------------------------


From: Chris Rebert on
On Wed, Jun 30, 2010 at 1:06 AM, Baris CUHADAR <189780(a)gmail.com> wrote:
> Can anyone explain this unexpected behavior?
> all files chmod 755, i've compiled x.py with py_compilefiles,
> also tried within python console with "import x"
>
> system:  centos 5.4 32bit
>
> This a PATH related problem i think?

Nope.

> [root(a)centos-14 cgi-bin]# ./x.pyc

..pyc files are just bytecode, not scripts, so you can't run them as
scripts/executables under *nix. Run the .py file instead. Or do
`python x.pyc` like you showed.

Cheers,
Chris
--
http://blog.rebertia.com
From: Rami Chowdhury on
On 2010-06-30 01:06, Baris CUHADAR wrote:
> Can anyone explain this unexpected behavior?

I'm sorry -- can you let us know what behavior you're expecting?

> all files chmod 755, i've compiled x.py with py_compilefiles,
> also tried within python console with "import x"
>
> system: centos 5.4 32bit
>
> This a PATH related problem i think?
>

Perhaps I'm misunderstanding what you're trying to do but from what I can
see, you are expecting .pyc files to be directly executed by the shell. And
as I understand them, they are *not* meant to be directly executed by the
shell at all -- they're simply a sometimes-useful shortcut for the Python
interpreter.

Python scripts like your x.py, however, *are* meant to be executed by the
shell. Have you tried:

[user(a)box cgi-bin]$ ./x.py

?

> [root(a)centos-14 cgi-bin]# ./x.pyc

May I ask, as well, why you're doing all of this as root?

>
>
> [root(a)centos-14 cgi-bin]# python x.pyc
> Content-Type:text/html
>
>
> python
> 2.4.3 (#1, Sep 3 2009, 15:37:12)
> [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)]
>
> --------------------------------------------------------------------------------------------
>
> x.py file content:
>
> #!/usr/bin/env python
>
> print "Content-Type:text/html\n\n"
> print "python"
> import sys
> print sys.version
>
> --------------------------------------------------------------------------------------------
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
From: Baris CUHADAR on
On Jun 30, 11:31 am, Rami Chowdhury <rami.chowdh...(a)gmail.com> wrote:
> On 2010-06-30 01:06, Baris CUHADAR wrote:
>
> > Can anyone explain this unexpected behavior?
>
> I'm sorry -- can you let us know what behavior you're expecting?
>
> > all files chmod 755, i've compiled x.py with py_compilefiles,
> > also tried within python console with "import x"
>
> > system:  centos 5.4 32bit
>
> > This a PATH related problem i think?
>
> Perhaps I'm misunderstanding what you're trying to do but from what I can
> see, you are expecting .pyc files to be directly executed by the shell. And
> as I understand them, they are *not* meant to be directly executed by the
> shell at all -- they're simply a sometimes-useful shortcut for the Python
> interpreter.
>
> Python scripts like your x.py, however, *are* meant to be executed by the
> shell. Have you tried:
>
> [user(a)box cgi-bin]$ ./x.py
>
> ?
>
> > [root(a)centos-14 cgi-bin]# ./x.pyc
>
> May I ask, as well, why you're doing all of this as root?
>
>
>
> > [root(a)centos-14 cgi-bin]# python x.pyc
> > Content-Type:text/html
>
> > python
> > 2.4.3 (#1, Sep  3 2009, 15:37:12)
> > [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)]
>
> > --------------------------------------------------------------------------------------------
>
> > x.py file content:
>
> > #!/usr/bin/env python
>
> > print "Content-Type:text/html\n\n"
> > print "python"
> > import sys
> > print sys.version
>
> > --------------------------------------------------------------------------------------------
>
> > --
> >http://mail.python.org/mailman/listinfo/python-list
>
>

Thank you for your replies.
This machine is a local virtual test machine so security issues are
omitted.

Actually i wrote some scripts in python that are working as gateway
controlling scripts iptables/tc/squid-proxy, and i want to execute
them as cgi. Protection of source code is also important. These
scripts works fine with ubuntu 9.10 and ubuntu 10.04, trying to
eleminate this execution error and successfully port them to centos
5.4. Or i have to rewrite these scripts in C which is time comsuming.

On centos 5.4, i think httpd tries to execute it as i did "./x.pyc".
From: Christian Heimes on
> Actually i wrote some scripts in python that are working as gateway
> controlling scripts iptables/tc/squid-proxy, and i want to execute
> them as cgi. Protection of source code is also important. These
> scripts works fine with ubuntu 9.10 and ubuntu 10.04, trying to
> eleminate this execution error and successfully port them to centos
> 5.4. Or i have to rewrite these scripts in C which is time comsuming.

It looks like you have the binfmt kernel feature installed and
configured on your Ubuntu machines. Do you have some Python related
files in /proc/sys/fs/binfmt_misc/ ?

Christian