Potřeboval jsem spustit po startu serveru script pro připojení USB disku. USB disk je formátován NTFS a slouží jako záložní medium pro zálohovací program Bareos.
Problémem bylo to, že server je virtualizován a při startu se USB disk nepřipojí vždy pod stejným označením. Proto bylo nutné použít script, kde se zjistí označení disku a takto zjištěný disk se připojí do adresáře, kde si Bareos ukládá své zálohy.
Obsah scriptu:
#!/bin/sh disk=$(fdisk -l | grep 'NTFS' | grep -o '^/dev/sd[b-z][0-9]') mount -o uid=113,gid=121,umask=027 -t ntfs-3g $disk /var/lib/bareos
Jako dobrá volba se jevilo spouštět tento script až po spuštění všech systémových scriptů, takže jsem si příkazem
ls -l /etc/rc2.d/
vypsal všechny spouštěné scripty. Svůj script jsem umístil do /etc/init.d/, nastavil mu práva na spouštění
chmod +x muj_script.sh
a zvolil jsem poslední pořadí spouštění. Použil jsem příkaz
update-rc.d muj_skript.sh defaults 20
Tento příkaz mi vyhodil chybu
'missing LSB tags and overrides'
a při zkoumání této chyby jsem zjistil, že mi ve scriptu chybí část mezi
BEGIN INIT INFO a END INIT INFO
### BEGIN INIT INFO # Provides: psa-firewall # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: User description here ### END INIT INFO
Proto jsem do scriptu doplnil tuto část a výsledný text scriptu vypadá takto
#!/bin/sh ### BEGIN INIT INFO # Provides: mount usb disk # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Pripojeni USB disku pri startu # Description: Pripojeni USB disku pro Bareos ### END INIT INFO disk=$(fdisk -l | grep 'NTFS' | grep -o '^/dev/sd[b-z][0-9]') mount -o uid=113,gid=121,umask=027 -t ntfs-3g $disk /var/lib/bareos exit 0
Takto napsaný script se regulérně spustí po startu systému a provede to, k čemu byl určen