Получение вывода на python контейнер и выполнение команд на значения - PullRequest
0 голосов
/ 20 января 2020

Мне было интересно, может ли кто-нибудь помочь, я пытаюсь создать сценарий, чтобы я мог отслеживать свои жесткие диски. Я пытаюсь использовать smartmontools для получения всех необходимых мне данных.

Я пытаюсь создать:

Сканер накопителей

Scan_of_Drives = os.system('cmd /k smartctl --scan')
print Scan_of_Drives

Я получаю этот вывод:

/dev/sda -d ata # /dev/sda, ATA device
/dev/csmi0,0 -d ata # /dev/csmi0,0, ATA device

Теперь я пытаюсь взять значения "sda" и "csmi" (обратите внимание, если есть еще диски, они мне тоже нужны) и сохранить его в контейнере, чтобы Я могу запустить его с моим следующим кодом.

, который: os.system('cmd /k smartctl -x sda') (и т. Д. И т. П.)

, затем сохранить эти данные в контейнере с именем "sda_data"

Извините, если это не является нормой для вопросов, но я пытался вот уже четыре недели, и я очень плохо знаком с python, что также работает мне на пользу.

I Буду признателен за любые советы или ссылки на веб-сайты, которые помогут мне в этом.

1 Ответ

0 голосов
/ 20 января 2020

Вы ничего не можете сделать, используя os.system, потому что он выполняет команду в подоболочке, не давая вам доступа к большому количеству или чему-либо, вы можете просто узнать, была ли команда выполнена успешно или не получена из ее возвращаемого значения.

Что вам нужно, так это subprocess, который является гораздо более гибким и, среди прочего, позволяет вам извлекать текст, сгенерированный командой (вывод в stdout). Здесь вы ищете subprocess.check_call (или правильную комбинацию аргументов для subprocess.run на Python 3, хотя, похоже, это не так).

Это Таким образом, вы получите полученный результат в виде строки, которую вы можете нарезать и нарезать кубиками для извлечения любой необходимой вам информации.

Альтернативой может быть использование чего-то вроде pySMART , который обертывает smartctl и выполняет синтаксический анализ для вас, предоставляя прямой программный c API для того, что вы ищете.

...