Я начинающий на питоне, я пишу скрипт python, чтобы проверить, что использование каждой точки монтирования выше порога или нет. Я могу вызвать команду оболочки и сохранить вывод в переменной. Но я не могу использовать переменную для разделения полей, проверить использование выше порогового значения и отчет о неисправностяхСценарий Python для проверки вывода на диск из Linux
/dev/mapper/system-root 20G 18G 1.4G 93%/
udev 3.9G 248K 3.9G 1% /dev
tmpfs 3.9G 68K 3.9G 1% /dev/shm
/dev/sda1 251M 71M 167M 30% /boot
/dev/mapper/system-oracle 128G 43G 79G 36% /opt/app/oracle
/dev/mapper/system-tmp 5.5G 677M 4.5G 13% /tmp
/dev/mapper/system-log 3.0G 140M 2.7G 5% /var/log
/dev/mapper/system-varsog 20G 654M 19G 4% /var/sog
/dev/mapper/system-backup 50G 24G 24G 50% /var/sog/backups
Я хочу сохранить поле 5 и поле 6 в ассоциативном массиве и проверить поле 5 с порогом и сообщением, если оно превышает пороговое значение.
Я использовал ниже сценарий для хранения вывода команды оболочки, и теперь мне нужно обработать, разделив его поля, но я не могу его хранить в массиве, поскольку он многомерен. Поэтому мне нужно использовать For Loop для хранения в другой массив.
Это очень легко сделать в оболочке, awk и perl, но, похоже, это очень сложный python.
>>> import sys, os, time, threading, subprocess,datetime
>>> diskinfo_raw = subprocess.Popen("df -h", shell=True,stdout=subprocess.PIPE)
>>> output = diskinfo_raw.communicate()[0]
>>> print output
Пожалуйста, помогите мне с идеей или ссылкой пожалуйста. Я изучил вариант с опцией loadtxt
, но я не хочу хранить значения в файле и снова читать его.
Это может быть хорошим началом, чтобы не добавить '- h' (правдоподобный) аргумент команде, чтобы получить более легкий для анализа вывода. –
'os.statvfs' используется в одном из ответов здесь, http://stackoverflow.com/a/31856769/5781248 –
Существует также межплатформенная библиотека, http://pythonhosted.org/psutil/ и' shutil.disk_usage' в версиях python 3.3 и более поздних версиях. –