Pertanyaan Autorun skrip setelah saya memasang atau mencabut perangkat USB


Apa yang dapat saya lakukan untuk menjalankan skrip secara otomatis setelah saya memasang / memasang atau melepas / mencabut perangkat USB?


20
2018-04-22 15:15


asal


@XxxXxx: bukan pilihan selama Sotong tidak memiliki versi rilis untuk Ubuntu 12.10 - Radu Rădeanu
kemungkinan duplikat: askubuntu.com/questions/25071/… - Glutanimate
@Glutanimate: pertanyaan itu adalah tentang USB flash drive spesifik, tetapi saya bertanya tentang perangkat USB, secara umum - Radu Rădeanu
@Glutanimate: katakanlah bahwa jawaban dari pertanyaan itu sangat membantu, toh tidak menjawab bagaimana menjalankan skrip secara otomatis setelah saya dicabut perangkat USB. - Radu Rădeanu
"biarkan mengatakan bahwa jawaban dari pertanyaan itu sangat membantu, bagaimanapun juga tidak menjawab bagaimana menjalankan skrip secara otomatis setelah saya mencabut perangkat USB" Saya menduga bahwa jika Anda mengubah "ACTION = 'add'" menjadi "ACTION = 'hapus' ", itu akan menjadi tempat yang bagus untuk memulai. - blujay


Jawaban:


Terimakasih untuk MinimusHeximus dan masing-masing kontributor untuk benang Dia menyebutkan dalam komentarnya untuk pertanyaan saya yang serupa, saya pikir saya sekarang dapat menawarkan jawaban berikut.

Anda akan membutuhkan 5 (lima) file untuk perangkat USB seperti berikut, cukup isi nilai masing-masing <fortheseparts>:

/etc/udev/rules.d/00-usb-<yourdevice>.rules

ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"    
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"

/usr/local/bin/usb-<yourdevice>-in_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &

/usr/local/bin/usb-<yourdevice>-in

#!/bin/bash
sleep 1
<yourbashscriptcode>

/usr/local/bin/usb-<yourdevice>-out_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &

/usr/local/bin/usb-<yourdevice>-out

#!/bin/bash
sleep 1
<yourbashscriptcode>

Catatan:

  1. Anda dapat menangkap nilai-nilai <yourvendorid> dan <yourproductid> dengan memasukkan perintah lsusb di Terminal - saat perangkat USB Anda dicolokkan - yang akan mencantumkan semua perangkat USB Anda yang saat ini tersedia, seperti Bus 003 Device 002: ID 8087:07da Intel Corp., dimana 8087 adalah VendorID dan 07da adalah ID Produk.
  2. Dan <yourdevice> bisa apa saja sewenang-wenang nama yang dapat Anda pilih untuk perangkat USB Anda, misalnya, saya memilih untuk menggunakan nama generik "keyboard"saat membuat file seperti itu untuk keyboard USB saya yang membutuhkan penerapan tata letak keyboard yang berbeda setiap kali dicolokkan.
  3. Dalam beberapa skenario, mungkin tidak perlu menggunakan ACTION=="remove" baris dalam file aturan udev, dan karenanya terkait 2 (dua) "out"file, saat Anda tidak perlu melakukan apa pun (mis. membalikkan perubahan yang dilakukan saat perangkat dicolokkan) setelah perangkat dicolokkan.

16
2017-09-20 13:58



Ini kelihatannya salah dari perspektif pemula saya. Bukankah klausa itu harus berada di jalur yang sama? - nafg
Ini berfungsi: ACTION == "add", ATTRS {idVendor} == "...", ATTRS {idProduct} == "...", ENV {XAUTHORITY} = "/ home / <user> /. Xauthority" , ENV {DISPLAY} = ": 0", RUN + = "<script>" - nafg
@nafg: dari perspektif pemula saya, seharusnya tidak ada bedanya jika Anda memasukkan semua dalam satu baris (menggunakan koma sebagai pemisah) dalam file aturan udev, tapi saya melihat bahwa Anda telah menambahkan parameter XAUTHORITY dan DISPLAY ke aturan udev, yang mungkin bekerja untuk Anda atau orang lain, dalam hal ini saya bertanya-tanya apakah mereka tidak lagi diperlukan dalam dua file skrip di bawah ini. - Sadi
ya itu intinya, Anda tidak lagi membutuhkan skrip perantara (kecuali mungkin untuk meletakkan skrip yang sebenarnya di latar belakang) karena udev memungkinkan Anda mengatur lingkungan. Juga pemahaman saya dari dokumen udev adalah bahwa setiap baris adalah aturan independen, garis dalam file tidak digabungkan. - nafg
@nafg: Terima kasih atas kontribusi Anda yang berharga. Saya memindahkan lingkungan ini ke aturan udev dan itu berhasil juga bagi saya. Juga, saya memindahkan skrip ke / usr / local / bin ketika saya mulai menemui masalah setelah saya memindahkan folder / home saya ke partisi terpisah sendiri (mungkin karena tidak terpasang lebih awal). Sepertinya menggunakan jeda baris dalam aturan udev tidak menimbulkan masalah apa pun setidaknya di sistem saya (Ubuntu 13.04 64 bit) dan saya lebih memilih ini agar mudah dibaca. - Sadi


Itu manajer file SpaceFM memungkinkan itu. Lihat Jalankan Otomatis pengaturan, misalnya Jalankan Otomatis | Di Gunung atau Jalankan Otomatis | Di Unmount.


3
2018-05-15 16:06