Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 29, 2014 16:22:31

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Здравствуйте, можно ли как внутри scripts.pyc подгрузить другой скрипт с сайта old.pyc и сразу его выполнить?

Офлайн

#2 Апрель 29, 2014 16:25:23

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Можно поподробней.

Офлайн

#3 Апрель 29, 2014 16:35:10

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

alexsis
Можно поподробней.

У нас есть скрипт scripts.pyc, нужно чтобы при выполнении его он соединился с сервером и загрузил от туда еще один скрипт old.pyc, и сразу его выполнил

Офлайн

#4 Апрель 29, 2014 22:05:54

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Можно, если scripts.py у вас тоже есть.

Офлайн

#5 Апрель 29, 2014 23:33:47

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Shaman
Можно, если scripts.py у вас тоже есть.

Все есть, загвоздка в том что как выполнить old.pyc после загрузки и через что лучше его загрузить и выполнить..

Офлайн

#6 Апрель 30, 2014 04:24:54

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

BossBox
находясь на форуме Python задавать такие вопросы =) скачать через http библиотеки, например

import urllib
urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')

За исполнение отвечает модуль subprocess



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Апрель 30, 2014 10:16:33

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

import urllib, subprocess
data = urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')
subprocess.call(data)

Правильно?

Отредактировано BossBox (Апрель 30, 2014 14:10:34)

Офлайн

#8 Апрель 30, 2014 21:47:01

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Скачать надо скрипт на локальный комп и выполнить , либо считать скрипт как строку и выполнить код через exec
как вам показали выше, этим вы скачиваете скрипт на ваш комп и уже потом его должны выполнить
типа

import urllib
import os
urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')
os.startfile('logo.png')
os.system('logo.png')
#################
import subprocess
proc = subprocess.Popen("1.py" , shell=True, stdout=subprocess.PIPE)
out = proc.stdout.readlines()
но если .pyc то не считает код и exec не пройдет, так что скачиваем и выполняем как выше показано
f = open('1.py','r').read()
print f
cod = compile(f, '<string>', 'exec')
exec cod

Отредактировано sanodin (Апрель 30, 2014 22:53:05)

Офлайн

#9 Май 1, 2014 00:10:24

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Подгрузить другой скрипт с сервера и выполнить внутри

Попробую, потом отпишусь.

Офлайн

#10 Май 1, 2014 01:54:57

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

Подгрузить другой скрипт с сервера и выполнить внутри

чтобы выполнить скрипт, достаточно его импортировать

t1.py

#!/usr/bin/env python3
 
def f():
    print('test')
 
f()

открываем python3 и импортируем t1, создаётся t1.pyc
t1.py переименовываем (чтобы он не был обнаружен), оставляем t1.pyc

t2.py
#!/usr/bin/env python3
 
import os
import importlib
 
def main():
    fname = 't1.pyc'
    mname = os.path.splitext(fname)[0]
    m = importlib.__import__(mname)
    print(m)
 
if __name__ == '__main__':
    main()

запускаем t2.py и получаем вывод
[guest@localhost t]$ ./t2.py 
test
<module 't1' from '/home/guest/tmp/tests/py/t/t1.pyc'>
[guest@localhost t]$



Отредактировано py.user.next (Май 1, 2014 01:55:24)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version