Форум сайта python.su
0
Есть задача в скрипте, выдернуть логин текущего пользователя в 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)) #команда для которой необходим логин
value = str("%s") % os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'")Офлайн
0
simple_snowВсё правильно.
закомменченный принт выводит на экран 0
Офлайн
0
knkdок
Всё правильно.
Если программа завершается без ошибок - по стандарту она возвращает ноль.
value = sys.stdout.write(os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'"))Офлайн
25
А чем плох os.getenv(“USER”)?
Офлайн
0
s0rgВариант отличный, только в соляре он под рутом пишет мне логин пользователя под которым я по ssh щас сижу. Завтра опробую без ssh, но спасибо за лаконичный вариант, что-то такое я и искал.
А чем плох os.getenv(“USER”)?
#!/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
Офлайн
25
Тогда вариант на скорую руку:
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)
Офлайн
13
os.geteuid() ?
Вернее pwd.getpwuid(os.geteuid())
Отредактировано (Июнь 5, 2011 20:35:16)
Офлайн