Yeni bir USB depolama aygıtı algılandığında kabuk komut dosyası nasıl çalıştırılır?


17

Ben bir günlüğü dökümü ve bir usb yığın depolama takılı (üzerinde 'OKdump' dosyası ile) ile en kısa sürede üzerinde oturum açmaya başlayan bir komut dosyası istiyorum. Ve anormal bir şey varsa (görsel olarak mevcut bir hata gibi) tespit etmek istiyorum ekran görüntüsünü alıp aynı sürücüye kaydedin.

Yanıtlar:


13

Udev kullanın. Udev bir aygıt yöneticisi arka plan programıdır. Diğer şeylerin yanı sıra cihazlarınızı adlandırmaktan da sorumludur. Kurallar dizinine belirli bir sözdizimine sahip dosyalar koyarak udev-rules tanımlayabilirsiniz. Kurallar birçok şey yapabilir - özellikle belirli bir cihaz bağlandığında komut dosyaları çalıştırabilirler.

Sorununuzu nasıl çözersiniz:

İlk önce cihazınızda bilgi toplamanız gerekir. Diyelim ki bağladınız ve adının altında olduğunu biliyorsunuz /dev/sdb1. Öyleyse çalıştırın:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)

Komut, cihazınız hakkında bilgi verir. Oldukça uzun. Cihazı benzersiz bir şekilde tanımlayan bir şey bulmanız gerekir. Bu bir seri benzeri ATTRS{serial}=="UA04FLGC"veya ATTRS{idVendor}ve gibi diğer özelliklerin bir kombinasyonu olabilir ATTRS{idProduct}. İsimlerin çoğu aşağı yukarı açıklayıcıdır. Makul görünen bir veya birkaç kombinasyon seçin - eğer işe yaramazlarsa, başka bir şey deneyin.

Benzersiz bir tanımlayıcı bulduğunuzda /etc/udev/rules.d, iki basamakla başlayan ve biten bir dosya oluşturun .rules. İki basamak, bu .rules dosyalarının işlenme sırasını belirtir - 70-usb-log-custom.rulessizin için iyi bir seçim olmalıdır. Bu kural dosyasının sözdizimi çok karmaşık olabilir. Eğer ilgileniyorsanız, google udev. Değilse, sadece yeni oluşturulan dosyayı açın ve böyle bir şeye benzeyecek şekilde düzenleyin:

# /etc/udev/rules.d/70-usb-log-custom.rules

KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"

Bu kullandığım gerçek bir udev dosyası. İçinde üç kural var. Her çizgi kendine özgü bir kuraldır. İlk satır, şifreli bir disk bağlandığında şifresi çözülmüş bir aygıt oluşturmak için bir komut dosyası çalıştırır. İkinci satır, şifresi çözülen cihazın kaldırılması durumunda aynı komut dosyasını farklı seçeneklerle çağırır. Üçüncü satır, ilgili başka bir cihaz için izinleri ayarlar.

Büyük olasılıkla sadece ilk satıra ihtiyacınız olacak. Gerisini silin ve doğru seriyi (veya cihazınızı tanımlamak için seçtiğiniz parametrelerin birleşimini) ekleyin.

Dosyamın açıklaması:

KERNEL=="sd?1"Bu kuralda aradığınız cihaz çizgisinde adlandırılır diyor /dev/sda1, /dev/sdc1veya böyle bir şey. Soru işareti herhangi bir harf için bir joker karakterdir. ATTRS{serial}=="UA04FLGC"burada benzersiz tanımlayıcıdır. Bahsettiğim diğer cihaz için (üçüncü satır) Seri numarasını değil, SYSFS{idVendor}=="1781"ve ve bir kombinasyonunu kullanıyorum SYSFS{idProduct}=="0c9f".

ACTION=="add"kurala yalnızca cihaz eklendiğinde işlem yapması gerektiğini söyler; kaldırıldığında değil.

SYMLINK+="cusb1"diske bir sembolik bağlantı oluşturur, böylece biri altında bulabilir /dev/cusb1.

RUN+="/home/confus/bin/usb-encrypt.sh add %k" komut dosyasını çalıştırır ve ona 'add' ve '% k' (aygıt adı) iletir.

Daha fazla ayrıntı vermeyeceğim, çünkü udev kuralları hakkında mükemmel öğreticiler var. Burada okuduklarınız gözden geçirmek için yeterli olmalıdır.


Mükemmel cevap ama şimdi günlüğü yapan bir senaryo istiyorum
Amith KK

4
O zaman SİZİN yazmanız veya tam olarak ne istediğiniz konusunda daha spesifik olmanız gerekir. Örneğin, bir ekran görüntüsünün size ne söyleyeceğini anlamıyorum. Ayrıca 'sistem günlüğünü döker' nereye? 'Anormal olan her şey' de oldukça geniş bir terimdir. Biz sizin kişisel ordunuz değiliz - bash-script hakkında bir iki şey biliyorsanız, şimdi senaryoyu kendiniz yazmak için ihtiyacınız olan tüm araçlara sahipsiniz.
con-f-use

: D üzgünüm @ con-f-use
Amith KK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.