Добавление эха [Генератор паролей]

Насколько я понимаю, цель состоит в том, чтобы вводить команду как точку монтирования и выводить серийный номер. Что ж, это возможно с помощью небольшого скрипта, который использует немного awk magic и пакет smartmontools .

Демо 2 :

$ ./mount2serial.sh /                                                                                                    
[sudo] password for xieerqi: 
Serial Number:    4G7AA3Q1HSZ4HH4YN
$ ./mount2serial.sh /mnt/HDD                                                                                             
[sudo] password for xieerqi: 
Serial Number:    4O75CEXFLML9M

А вот сам скрипт:

#!/usr/bin/env bash

if [ "$1" = "/"  ]
then
    dev=$(awk -v mount="$1" '$2 == mount{print $1}' /proc/self/mounts)
else
    dev=$(awk -v mount="$1" '$0 ~ mount{print $1}' /proc/self/mounts)
fi
sudo smartctl -i "$dev" | grep 'Serial Number:'

Поскольку серийный номер действительно указан в lsblk , и версия GNU 1 из lsblk может выводить данные JSON, я собрал скрипт Python, который работает так 2 :

$ ./mount2serial.py '/mnt/ubuntu'
4O75CEXFLML9M
xie@xie-PC:~$ ./mount2serial.py '/'
B4VOM8OEIZIHF
#!/usr/bin/env python3

import json
import subprocess
import sys

lsblk = subprocess.run(['lsblk','-J','-o','NAME,SERIAL,MOUNTPOINT'],stdout=subprocess.PIPE)
for dev in json.loads(lsblk.stdout.decode())['blockdevices']:
    serial = ''
    # find serial number of current block device
    for key,value in dev.items():
        if key == 'serial':
            serial = value
            break
    # we don't need to iterate through everything in dev.items()
    for child in dev['children']:
        if child['mountpoint'] == sys.argv[1]:
            print(serial)
            sys.exit(0)
# if nothing is found we end up here with exit status 1 and nothing printed
sys.exit(1)

1. Понятия не имею, существуют ли не-GNU версии lsblk , но если они есть - оставьте комментарий

2. Показанные серийные номера представляют собой случайные строки, сгенерированные из / dev / urandom для демонстрационных целей

1
17.12.2015, 15:55
0 ответов

Теги

Похожие вопросы