Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2008 02:33:03

Hider
От:
Зарегистрирован: 2008-05-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

изменить тип данных

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

x = os.system("ls")
sock.send(x)

TypeError: send() argument 1 must be string or read-only buffer, not int
придумал делать так
f = file("/tmp/cmd", "w")
f.write(str("ls"))
f.close()
os.popen("bash /tmp/cmd > /tmp/out")
f = file("/tmp/out", "r")
outbuff = f.read()
sock.send(outbuff)
но ето крайне неудобно, нужно както преобразовать содержимое переменной чтоб оно могло отправится.



Офлайн

#2 Окт. 3, 2008 03:17:55

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

изменить тип данных

не знаю даже что и сказать…



Офлайн

#3 Окт. 3, 2008 03:25:59

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

изменить тип данных

функция os.system() возвращает “exit status of the process ” (см. документацию).
А тебе надо получить вывод (stdout).
Это можно сделать с помощью модуля subprocess.
Например так:

import subprocess
...

x = subprocess.Popen('ls', shell = True, stdout = subprocess.PIPE).communicate()[0]

sock.send(x)



Отредактировано (Окт. 3, 2008 03:30:20)

Офлайн

#4 Окт. 3, 2008 12:24:05

Hider
От:
Зарегистрирован: 2008-05-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

изменить тип данных

точно, спасибо.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version