Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2014 09:28:49

silent_lab
Зарегистрирован: 2014-01-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

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

есть команда sdparm –quiet –page=sn /dev/sda
как мне присвоить значение ее выполнение переменной.
Вобщем нужну при загрузке debian проверить Sn диска, и если он не совпадает то произвести выключение ОС.

Офлайн

#2 Авг. 4, 2014 09:36:31

alrusdi
Зарегистрирован: 2013-09-30
Сообщения: 20
Репутация: +  8  -
Профиль   Отправить e-mail  

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

Офлайн

#3 Авг. 4, 2014 09:54:30

silent_lab
Зарегистрирован: 2014-01-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Уменя на машинке стоит 2.6 python
и темболее при использовании subprocess. call() получают коды возврата…. а мен нужно значение которые выдаст команда ….. когда она выполняеться то получаю серийный номер диска. Он мне то и нужен.

Отредактировано silent_lab (Авг. 4, 2014 10:14:34)

Офлайн

#4 Авг. 4, 2014 10:17:23

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

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

https://docs.python.org/2.6/library/subprocess.html

py.user.next
а мен нужно значение которые выдаст команда

Это stdout.

>>> import subprocess as subp
>>> 
>>> p = subp.Popen('echo x | cat -n', shell=True, stdout=subp.PIPE)
>>> out, err = p.communicate()
>>> out, err, p.returncode
('     1\tx\n', None, 0)
>>>



Отредактировано py.user.next (Авг. 4, 2014 10:22:26)

Офлайн

#5 Авг. 4, 2014 11:32:22

silent_lab
Зарегистрирован: 2014-01-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Все разобрался почти, может кому пригодится:

import subprocess
infoHDD []
proc = subprocess.Popen('sdparm --quiet --page=sn /dev/sda', shell=True, stdout=subprocess.PIPE)
while True:
    line = proc.stdout.readline()
    if not line:
        break
    infoHDD.append(line)
print (infoHDD[1])

вот что еще интересно , вожноли считать сразу то что нужно или нужно сперва создать список….. допустим в маем примере после выполнения команды возвратит 2 строчки, могу ли сразу допустим пременной line присвоить значение 2й строки без остального кода?

Офлайн

#6 Авг. 4, 2014 18:29:36

simple_user
Зарегистрирован: 2014-07-06
Сообщения: 60
Репутация: +  2  -
Профиль   Отправить e-mail  

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

возможно через срез

Офлайн

#7 Авг. 4, 2014 23:35:51

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

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

silent_lab

import subprocess
proc = subprocess.Popen('sdparm --quiet --page=sn /dev/sda', shell=True, stdout=subprocess.PIPE)
proc.wait() # ждем завершения работы дочерней программы
infoHDD=proc.stdout.readlines()[1]
print (infoHDD)



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version