HDD administration and maintenance
Project description
osso-docktool provides tools to register disks to the OSSO dashboard, to print labels and wipe disks.
Requirements (apt install --no-install-recommends):
tmux # auto cli mode coreutils # dd pwgen # pwgen smartmontools # smartctl nvme-cli # nvme hdparm # hdparm sdparm # sdparm ledmon # LED control # FIXME: /usr/local/bin/run-lessrandom # FIXME: /usr/local/bin/run-zero-disk
Example usage (as root):
osso-docktool /dev/sdb
Example setup (as root):
pip3 install osso-docktool
install -dm0700 /etc/osso-docktool
install /usr/local/share/doc/osso-docktool/local_settings.py.template \
/etc/osso-docktool/local_settings.py
${EDITOR:-vi} /etc/osso-docktool/local_settings.py
# ^-- fix hostnames, fix tokens
# get 1 shared token from:
# https://account.example.com/admin/usertoken/token/
# If you wish to use the auto process you will want to add the
# root disk to the IGNORE_DEVICES list.
Automation
/etc/udev/rules.d/10-osso-docktool.rules:
# Match the block device but not the partitions.
KERNEL=="sd[a-z]", SUBSYSTEM=="block", ACTION=="add", ENV{SYSTEMD_WANTS}+="osso-docktool@%k.service", TAG+="systemd"
/etc/systemd/system/osso-docktool@.service:
[Unit] Description=Notify osso-docktool about disk %i StopWhenUnneeded=yes [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/osso-docktool auto-notify --add /dev/%i ExecStop=/usr/local/bin/osso-docktool auto-notify --remove /dev/%i
When a disk is inserted this will start the osso-docktool@<disk>.service which will notify the osso-docktool auto process. The service is needed because udev starts RUN commands in a restricted container without network access and the systemd process is started outside the restricted container.
When the disk is removed systemd will stop the osso-docktool@<disk>.service.
There are several auto commands Beware that both erase commands will erase all inserted disks that do not match the ignore list without confirmation!
EMAIL=me@example.com osso-docktool auto
By default this uses a tmux session to spawn osso-docktool commands but there is a -g|–gui toggle to switch to a graphical terminal. You can change the default graphical terminal with the command:
update-alternatives --config x-terminal-emulator
Other tools
/usr/local/bin/run-zero-disk (0700):
#!/bin/bash
path=$1
if test -z $path; then
echo "please supply path as argument"
exit 1
fi
output=$(dd if=/dev/zero \
of=$path \
bs=32M \
conv=fsync 2>&1)
ret=$?
# Checking output as DD does not exit clean even if whole disk is wiped
if [[ $ret -eq 0 ]]; then
exit 0
else
if [[ $output == *'No space left on device'* ]]; then
echo "Disk $path has been zeroed"
exit 0
else
echo "Something went wrong while writing to $path"
echo $output
exit 1
fi
fi
Compile lessrandom.c and move lessrandom to /usr/local/bin/lessrandom (0700):
lessrandom.c:
#include <stdio.h>
#include <time.h>
#define BUF 4096
int main() {
FILE *f;
char buf[BUF];
f = fopen("/dev/urandom", "rb");
while (1) {
if (fread(buf, 1, BUF, f) == BUF) {
int i;
for (i = 0; i <= buf[0]; ++i) {
fwrite(buf, 1, BUF - 1, stdout);
}
}
}
fclose(f);
return 0;
}
gcc -Wall lessrandom.c -o lessrandom
/usr/local/bin/run-lessrandom (0700):
#!/bin/bash
path=$1
if test -z $path; then
echo "please supply path as argument"
exit 1
fi
output=$(dd if=<(/usr/local/bin/lessrandom) \
of=$path \
bs=32M \
conv=fsync 2>&1)
ret=$?
# Checking output as DD does not exit clean even if whole disk is wiped
if [[ $ret -eq 0 ]]; then
exit 0
else
if [[ $output == *'No space left on device'* ]]; then
echo "Disk $path has been wiped"
exit 0
else
echo "Something went wrong while writing to $path"
echo $output
exit 1
fi
fi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file osso_docktool-1.9.8.tar.gz.
File metadata
- Download URL: osso_docktool-1.9.8.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a449d047ad78bcdeecc97a7661846415f5fbfb1aca06fbc580fe08e79c406fd4
|
|
| MD5 |
b7f5678fb88c9b56041070a01e3c3ca2
|
|
| BLAKE2b-256 |
daeb9695aa8d2312a653891f549b6eda6bc8e8c451beb2a323c57f05030dc5e8
|
File details
Details for the file osso_docktool-1.9.8-py3-none-any.whl.
File metadata
- Download URL: osso_docktool-1.9.8-py3-none-any.whl
- Upload date:
- Size: 37.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d0fdbef18c081b8a189655c51d203df8752beee381ae84feaee575bb1c9788e
|
|
| MD5 |
129c5fef393104139c594d2b93b0c3a5
|
|
| BLAKE2b-256 |
cba611dc6a1bfdca97e6b56d67b70f3063ded60e36819602fc074e7f3bf52f72
|