Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2016 15:22:46

palzuncoff
Зарегистрирован: 2015-08-27
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

CGI script is not executable

Извините, но я не вижу никаких \r в концах срок в этом файле, может не туда смотрю.

Офлайн

#2 Фев. 9, 2016 02:41:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

CGI script is not executable

\r - это байт 0x0d, его не видно, но он есть (через hex-редактор смотри).



Офлайн

#3 Фев. 9, 2016 10:36:08

palzuncoff
Зарегистрирован: 2015-08-27
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

CGI script is not executable

открыл в hex редакторе, тикже ничего не нашел. я пользовался hexurse, видимо редактор не очень, так что я просто взял и заново перепесал в ручную весб модуль и пошло. Спасибо за помощь)))
если знаете посоветуйте какойто hex editor.

Отредактировано palzuncoff (Фев. 9, 2016 10:48:52)

Офлайн

#4 Фев. 9, 2016 12:43:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

CGI script is not executable

palzuncoff
открыл в hex редакторе, тикже ничего не нашел
Вот твой файл, который ты прикреплял, вот там 0d - это и есть \r.
[guest@localhost Downloads]$ .hex cgi101.py 
00000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 |#!/usr/bin/env p|
00000010 79 74 68 6f 6e 33 0d 0a 69 6d 70 6f 72 74 20 63 |ython3..import c|
00000020 67 69 0d 0a 66 6f 72 6d 20 3d 20 63 67 69 2e 46 |gi..form = cgi.F|
00000030 69 65 6c 64 53 74 6f 72 61 67 65 28 29 20 20 20 |ieldStorage() |
00000040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | # |
00000050 70 61 72 73 65 20 66 6f 72 6d 20 64 61 74 61 0d |parse form data.|
00000060 0a 70 72 69 6e 74 28 27 43 6f 6e 74 65 6e 74 2d |.print('Content-|
00000070 74 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 5c |type: text/html\|
00000080 6e 27 29 20 20 20 20 20 20 20 20 23 20 68 64 72 |n') # hdr|
00000090 20 70 6c 75 73 20 62 6c 61 6e 6b 20 6c 69 6e 65 | plus blank line|
000000a0 0d 0a 70 72 69 6e 74 28 27 3c 74 69 74 6c 65 3e |..print('<title>|
000000b0 52 65 70 6c 79 20 50 61 67 65 3c 2f 74 69 74 6c |Reply Page</titl|
000000c0 65 3e 27 29 20 20 20 20 20 20 20 20 23 20 68 74 |e>') # ht|
000000d0 6d 6c 20 72 65 70 6c 79 20 70 61 67 65 0d 0a 69 |ml reply page..i|
000000e0 66 20 6e 6f 74 20 27 75 73 65 72 27 20 69 6e 20 |f not 'user' in |
000000f0 66 6f 72 6d 3a 0d 0a 20 20 20 20 70 72 69 6e 74 |form:.. print|
00000100 28 27 3c 68 31 3e 57 68 6f 20 61 72 65 20 79 6f |('<h1>Who are yo|
00000110 75 3f 3c 2f 68 31 3e 27 29 0d 0a 65 6c 73 65 3a |u?</h1>')..else:|
00000120 0d 0a 20 20 20 20 70 72 69 6e 74 28 27 3c 68 31 |.. print('<h1|
00000130 3e 48 65 6c 6c 6f 20 3c 69 3e 25 73 3c 2f 69 3e |>Hello <i>%s</i>|
00000140 21 3c 2f 68 31 3e 27 20 25 20 63 67 69 2e 65 73 |!</h1>' % cgi.es|
00000150 63 61 70 65 28 66 6f 72 6d 5b 27 75 73 65 72 27 |cape(form['user'|
00000160 5d 2e 76 61 6c 75 65 29 29 0d 0a |].value))..|
0000016b
[guest@localhost Downloads]$

palzuncoff
если знаете посоветуйте какойто hex editor.
Поставь себе линукс.
Тут можешь выборку посмотреть виндовых.
Там есть в списке плагин к Notepad++, я бы попробовал.

В лине есть hexedit - неплохой, консольный и удобный. Это именно редактор, а не вьювер, как hexdump (по дефолту).
А ещё в Emacs'е есть, но Emacs надо изучать, чтобы вообще пользоваться.
В Vim'е есть тоже похожий.



Офлайн

#5 Фев. 9, 2016 13:19:57

palzuncoff
Зарегистрирован: 2015-08-27
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

CGI script is not executable

спасибо я понял,
хотел заметить что у меня линукс, а этот сценарий походу написан на виндовс и работает там отлично.
после ваших рекомендаций я почитал и выяснил что \r в конце добовляет именно виндовс так как dos понимает именно этот перенос строки.
также эти символы можно увидеть open('cgi101.py', ‘rb’).read() в интерактивной оболочке.
ещё для людей которые возможно будут читать эту тему хочу сказать что если редактирование юникода не для вас, то с этой проблеммой можно справится просто переписав модуль заново (не скопировать содержимое а именно вбить его руками) и все пойдет.

Офлайн

#6 Фев. 9, 2016 14:29:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

CGI script is not executable

palzuncoff
не скопировать содержимое а именно вбить его руками
В линуксе это через sed делается.
sed -i~ 's/\r//' cgi101.py

А в винде можно и без каретки писать, если в Notepad++ режим выставить. Но тогда виндовые проги (типа блокнота) не будут распознавать такие концы строк (слитно будут писать).



Отредактировано py.user.next (Фев. 9, 2016 14:30:55)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version