Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 5, 2011 15:42:46

simple_snow
От:
Зарегистрирован: 2011-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

Есть задача в скрипте, выдернуть логин текущего пользователя в solaris и подставить это имя для выполнения другой команды.
логин выдергивается скриптом awk:

id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'
вот как выглядит программа
#!/usr/bin/env python

import os
import sys
#попытка передать в value значение
value = os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'")
#print value
os.system("/path/to/program -u %s" $(value)) #команда для которой необходим логин
закомменченный принт выводит на экран 0
предпренимал попытки записать значение, еще вот так:
value = str("%s") % os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'")
но безуспешно.
Помогите пожалуйста с решением и объясните понятно, что я делаю не так.. Заранее благодарен.



Офлайн

#2 Июнь 5, 2011 15:56:35

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

simple_snow
закомменченный принт выводит на экран 0
Всё правильно.
Если программа завершается без ошибок - по стандарту она возвращает ноль.



Офлайн

#3 Июнь 5, 2011 16:04:22

simple_snow
От:
Зарегистрирован: 2011-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

knkd
Всё правильно.
Если программа завершается без ошибок - по стандарту она возвращает ноль.
ок
Тогда посоветуйте, как мне справиться с задачей? Логин отпечатывается в терминал при каждом выполнении программы, то есть вываливается в стандартный выходной поток?..
Были у меня попытки
value = sys.stdout.write(os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'"))
Но сообщается о том, что параметром передается int



Офлайн

#4 Июнь 5, 2011 17:56:25

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

А чем плох os.getenv(“USER”)?

Офлайн

#5 Июнь 5, 2011 19:17:51

simple_snow
От:
Зарегистрирован: 2011-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

s0rg
А чем плох os.getenv(“USER”)?
Вариант отличный, только в соляре он под рутом пишет мне логин пользователя под которым я по ssh щас сижу. Завтра опробую без ssh, но спасибо за лаконичный вариант, что-то такое я и искал.
Буквально недавно я соорудил следующее извращение
#!/usr/bin/env python

os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}' >> file")
value = open("file").readline().rstrip('\n')
print value



Офлайн

#6 Июнь 5, 2011 19:55:16

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Не получается передать логин текущего пользователя в переменную python

Тогда вариант на скорую руку:

from subprocess import Popen, PIPE

info = Popen("id", shell=True, stdin=PIPE, stdout=PIPE).stdout.read().split()
login = info[0].split('(')[1].strip(')')
print login

Отредактировано (Июнь 5, 2011 20:03:18)

Офлайн

#7 Июнь 5, 2011 20:30:29

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

Не получается передать логин текущего пользователя в переменную python

os.geteuid() ?

Вернее pwd.getpwuid(os.geteuid())



Отредактировано (Июнь 5, 2011 20:35:16)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version