Найти - Пользователи
Полная версия: Не получается передать логин текущего пользователя в переменную python
Начало » Python для новичков » Не получается передать логин текущего пользователя в переменную python
1
simple_snow
Есть задача в скрипте, выдернуть логин текущего пользователя в 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)}'")
но безуспешно.
Помогите пожалуйста с решением и объясните понятно, что я делаю не так.. Заранее благодарен.
knkd
simple_snow
закомменченный принт выводит на экран 0
Всё правильно.
Если программа завершается без ошибок - по стандарту она возвращает ноль.
simple_snow
knkd
Всё правильно.
Если программа завершается без ошибок - по стандарту она возвращает ноль.
ок
Тогда посоветуйте, как мне справиться с задачей? Логин отпечатывается в терминал при каждом выполнении программы, то есть вываливается в стандартный выходной поток?..
Были у меня попытки
value = sys.stdout.write(os.system("id | awk '/uid/ {print($1)}' | awk -F'(' '/uid/ {print($2)}' | awk -F')' '{print($1)}'"))
Но сообщается о том, что параметром передается int
s0rg
А чем плох os.getenv(“USER”)?
simple_snow
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
s0rg
Тогда вариант на скорую руку:

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
Ed
os.geteuid() ?

Вернее pwd.getpwuid(os.geteuid())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB