# [SOLVED] Skrypty /etc/hotplug/*

## robertsurma

Czy coś się ostatnio zmieniło? 

Skrypty w /etc/hotplug/usb/* nie są uruchamiane.

Nie mam także /sbin/hotplug

Używam udev, openrc, kernel 4.0.5.

Urządzenia USB są uczywiście wykrywane (drukarki, dyski). Chodzi tylko o uruchamianie tych skryptów.

Zapomniałem jakiegoś pakietu lub opcji w jądrze?

----------

## robertsurma

Wstyd się przyznać, ale nie śledziłem ostatnio trendów w tym temacie i nie byłem świadom, że udev już całkowicie zastąpiło /etc/hotplug (myślałem, że nadal działają równocześnie). Na swoje pocieszenie dodam, że developerzy pakietu foo2zjs też chyba nie są tego świadomi, bo to właśnie ten pakiet stworzył /etc/hotplug i umieścił w nim skrypty inicjujące drukarkę (które oczywiście są "martwe").

Cóż... musiałem sam napisać skrypty, które będą wysyłać do drukarki HP1018 firmware i umieścić je w /udev/rules.d.

Dla zainteresowanych, podaję poniżej zawartość (skrypty oprócz wysyłania firmware'u, mają także zapobiegać kilkukrotnemu uruchamianiu się w pętli - stąd "locker").

cat /udev/rules.d/hp_1018.rules

```
#!/bin/bash

# Wysyła firmware po wykryciu drukarki HP1018

# Atrybuty urzadzenia mozna uzyskac wydajac polecenie:

# udevadm info -a -p /sys/class/usbmics/lp0

ACTION=="add", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4117", ATTRS{serial}=="KP3KW7X", RUN+="/home/user/.skrypty/hp_1018_firmware"

ACTION=="remove", ENV{ID_MODEL}=="HP_LaserJet_1018", RUN+="/home/user/.skrypty/hp_1018_rm_locker"
```

cat /home/user/.skrypty/hp_1018_firmware

```
#!/bin/bash

LOCKER='/tmp/hp1018.lock';

FIRMWARE='/usr/share/foo2zjs/firmware/sihp1018.dl';

DRUKARKA='/dev/usb/lp0';

LOG='/tmp/hp1018.log';

if [ -e $LOG ]; then

   echo "`date` : Skrypt wywoływany jest po raz kolejny" >> $LOG;

   else

   touch $LOG;

   chmod 777 $LOG;

   chown robert.users $LOG;

fi

sleep 3;

if [ -e $LOCKER ]; then

   echo "`date` : Odmowa. Firmware zostal juz wyslany" >> $LOG;

   sleep 3;

   break;

else

   if [ -e $DRUKARKA ]; then

      echo "`date` : Wykryto urzadzenie drukarki. Za 2 sekundy wysle firmware do drukarki." >> $LOG;

      sleep 2;

      echo "`date` : Wysylam..." >> $LOG;

      cat $FIRMWARE > $DRUKARKA;

      echo "`date` : Firmware zostal wyslany" >> $LOG;

      sleep 4;

      touch $LOCKER && chmod 777 $LOCKER && chown robert.users $LOCKER;

      break;

   else

      echo "`date` : Nie wykryto jeszcze urzadzenia drukarki" >> $LOG;

   fi

fi
```

cat /home/user/.skrypty/hp_1018_rm_locker

```
#!/bin/bash

rm -f /tmp/hp1018.lock;

rm -f /tmp/hp1018.log;
```

----------

