Контроль usb устройств linux

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

List and monitor USB devices connected to Linux host. Also as Collectd plugin.

License

google/usbmon

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

A tool to enumerate, list and monitor USB devices connected to a Linux host.

  • Print a list of connected devices with USB path, properties and speed
  • Monitor udev events such as connect or disconnect and print them with a timestamp
  • Collectd plugin mode
  • JSON stream mode
usbmon [-n] [-c] [-j] -n do not monitor events -c collectd exec plugin mode -j json stream mode 

Usbmon can operate as collectd exec plugin.

Add a new type to /usr/share/collectd/types.db :

usb_devices connected:GAUGE:0:U, adds:COUNTER:U:U, removes:COUNTER:U:U 

Create exec plugin config file, /etc/collectd/collectd.conf.d/usbmon.conf :

LoadPlugin Exec Exec "nobody" "/var/lib/collectd/plugins/usbmon" "-c" 

Install usbmon in the plugins directory and restart collectd.

Читайте также:  Linux cpu in boost

Usbmon can generate a streaming JSON output with per port events. Streaming JSON is basically a never ending array. To use in Go:

type evt struct < Port string Serial string Event string Speed float32 >u := exec.Command("usbmon") o, _ := u.StdoutPipe() u.Start() d := json.NewDecoder(o) d.Token() // read opening [ for d.More()

This is not an official Google product.

About

List and monitor USB devices connected to Linux host. Also as Collectd plugin.

Источник

Как в Linux посмотреть подключенные USB устройства

В настоящее время многие компьютерные периферийные устройства, такие как веб-камеры, мыши, сканеры, принтеры, жесткие диски, USB (Pendrive) подключаются по USB. После того, как эти устройства подключены к рабочему столу или серверу, важно знать имя устройства или путь к нему. Это помогает идентифицировать USB устройства для таких задач, как форматирование или отключение.

В Linux все файлы устройств хранятся в каталоге /dev и должны быть доступны во время загрузки системы.

В этой статье я покажу вам различные способы как в ubuntu посмотреть usb устройства. Большинство команд, упомянутых здесь, должны работать практически на всех дистрибутивах Linux. Например Ubuntu, Debian, Mint.

Просмотр списка имен USB устройств с помощью команды df

Команда df — это полезная команда, которая может помочь составить список всех подключенных томов, включая USB-накопители.

Как только USB-устройство подключается в систему Linux, это устройство автоматически монтируется в раздел /media и становится готовым к использованию.

Команда df проверяет подключенные USB устройства

Из приведенного выше вывода следует, что у меня есть 1 USB-накопитель /dev/sdb с 2 разделами /dev/sdb1 и /dev/sdb2

Список имен подключенных USB — устройств с помощью команды lsblk

Команда Lsblk используется для перечисления всех блочных устройств в системе Linux. Из списка можно фильтровать USB-устройства с помощью команды grep.

Список команд lsblk USB-устройства

Чтобы получить дополнительную информацию, такую как UUID, производитель и тип файловой системы, используйте команду blkid, как показано на рисунке ниже.

Вывод команды blkid для получение информации об устройствах USB

Список USB — устройств с помощью команды fdisk

Вы можете использовать старую добрую команду fdisk, которая используется для разбиения томов на разделы, чтобы перечислить все разделы в системе Linux, включая USB-накопители.

Запятая будет отображать подробную информацию о вашем USB-томе, включая разделы , размер тома, секторы и тип файловой системы.

команда lsusb

На выводе выше отображается идентификатор шины, идентификатор устройства, идентификатор USB, а также поставщик или производитель USB-устройств

Команда lsusb перечисляет подключенные устройства и не предоставляет дополнительной информации о USB-устройствах.

Для получения дополнительной информации о подключенных USB устройствах используйте команду dmesg. Команда dmesg, также известная как “сообщение драйвера” или “показать сообщение”, используется для проверки загрузочных сообщений. Кроме того, эта команда используется для отладки проблем, связанных с оборудованием и печати сообщений, генерируемых драйверами устройств.

Читайте также:  Альт линукс настройка домена

Вы можете использовать команду dmesg и grep, чтобы сузиться до USB-устройств.

команда dmesg

Кроме того, вы можете передать вывод команды dmesg в less для облегчения прокрутки.

На выходе вы можете найти определенную строку, нажав клавишу прямой косой черты ( / ) на клавиатуре, а затем имя или идентификатор устройства USB-устройства.

В моем случае я ищу дополнительную информацию о USB устройстве под названием SanDisk.

Поиск USB-накопителя

Список USB контроллеров и устройств, использующих USB устройства

Команда usb-devices-это сценарий оболочки, который позволяет вам перечислить все USB-контроллеры и USB-устройства, подключенные к вашему компьютеру. Он печатает детали USB-устройства, такие как производитель, название продукта, серийный номер и многое другое. Вот вывод команды:

Команда usb-devices для перечисления usb - устройств в Linux

Заключение

В этой статье мы продемонстрировали различные способы просмотра USB-устройств, подключенных к системе Linux.

Источник

Мониторинг подключения USB накопителей и логирование операций с файлами

Для выполнения данной задачи я использовал свойство udev, которое позволяет выполнять скрипт при наступлении какого-либо события. Создадим правило, которое будет отвечать за подключение и отключение usb устройств:

touch /etc/udev/rules.d/usb.rules 

Содержимое файла usb.rules:

ACTION=="add", SUBSYSTEM=="block", ENV=="usb|mmc|memstick|ieee1394", RUN+="/bin/bash /etc/udev/usb_on.sh %E %E %E" ACTION=="remove", SUBSYSTEM=="block", ENV=="usb|mmc|memstick|ieee1394", RUN+="/bin/bash /etc/udev/usb_off.sh %E %E %E" 
  • ACTION – отслеживаемое действие, add – подключение устройств, remove – отключение;
  • ENV – перечень отслеживаемых устройств по типу;
  • RUN – исполняемое действие. В данном случае, в зависимости от события, запускаются скрипты usb_on.sh и usb_off.sh.
  • %E – серийный номер USB устройства;
  • %E – модель USB устройства;
  • %E – производитель USB устройства.
/usr/bin/curl -d "host=$(hostname)&serial=$1&name=$2&vendor=$3&file=on&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php 
/usr/bin/curl -d "host=$(hostname)&serial=$1&name=$2&vendor=$3&file=off&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php 
  • host – имя компьютера результат выполнения команды hostname;
  • serial — серийный номер USB устройства (%E)
  • name — модель USB устройства (%E)
  • vendor — производитель USB устройства (%E)
  • file – действие. on – подключение, off — отключение (file — название поля выбрано по той причине, что сюда же будет вноситься и информация о файлах, над которыми производились какие-либо действия)
  • sub=true – имитация нажатия кнопки на веб-форме.
2.Сервер сбора информации

Как видно из запускаемых скриптов usb_on.sh и usb_off.sh – вся информация передается на php скрипт, который состоит из простой веб-формы и обработчика запроса.

Обработчик делает одно – складывает принятые данные в таблицу usb БД MySQL

mysql_query("INSERT INTO `usb` (`id`, `date`, `host`, `ip`, `serial`, `name`, `vendor`, `file`) VALUES (NULL, '$time', '$_POST[host]', '$_SERVER[REMOTE_ADDR]', '$_POST[serial]', '$_POST[name]', '$_POST[vendor]', '$_POST[file]')"); 
CREATE TABLE IF NOT EXISTS `usb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` bigint(20) NOT NULL, `ip` varchar(15) COLLATE utf8_bin NOT NULL, `host` varchar(50) COLLATE utf8_bin NOT NULL, `serial` varchar(100) COLLATE utf8_bin NOT NULL, `name` varchar(100) COLLATE utf8_bin NOT NULL, `vendor` varchar(100) COLLATE utf8_bin NOT NULL, `file` text COLLATE utf8_bin, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ; 
3. Мониторинг операций с файлами

Для выполнения функции отслеживания операций, которые выполнялись на файлами на подключенном носителе был написан следующий скрипт:

touch /var/tmp/usb.check # обновляем время модификации файла check=1 while [ $check ] # бесконечный цикл do if [ -f /var/tmp/usb.check ] # если существует файл then ACCESS='' # обнуляем переменные CREATE='' MODIFY='' # Далее, ищем в папке /media файлы, значения времен создания, изменения, доступа которых больше, чем только что созданным файлом /var/tmp/usb.check ACCESS=`find /media -anewer /var/tmp/usb.check -type f` CREATE=`find /media -cnewer /var/tmp/usb.check -type f` MODIFY=`find /media -newer /var/tmp/usb.check -type f` if [ ! -z "$ACCESS" ] then ACCESS="access "$ACCESS # Передача информации на сервер /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$ACCESS&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi if [ ! -z "$CREATE" ] then CREATE="create "$CREATE /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$CREATE&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi if [ ! -z "$MODIFY" ] then MODIFY="modify "$MODIFY /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$MODIFY&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi fi touch /var/tmp/usb.check # обновляем время sleep 5 # пауза done 

image

Данный скрипт добавляется в автозапуск и работает в фоновом режиме.
Для получения выборки сохраненной информации написан php скрипт, выбирающий из БД записи за указанный период и по выбранным ПК. Пример вывод информации:

Читайте также:  Linux grub восстановление загрузки
4. Распростренение по ПК

Т.к. ПК с сети расположено достаточно много, было решено сделать это в полу-автоматическом режиме. А именно: написан скрипт, который считывает из файла список ПК для распространения и передает на них необходимые файлы. Выполняется это с помощью утилит sshpass (для автоматического ввода пароля) и scp (копирование).
Для начала в /etc/ssh/ssh_config меняем директиву StrictHostKeyChecking:

Делается это для того, что бы ssh ключи автоматически добавлялись в список доверенных.

Непосредственно сам скрипт распространения:

#!/bin/bash while read line; do array[$index]="$line" index=$(($index+1)) done < hosts.conf for ((a=0; a < $; a++)) do remote=`echo $ | awk '< print $1 >'` echo "$remote begin"; /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/usb.rules admin@$remote:/etc/udev/rules.d/usb.rules /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/*.sh admin@$remote:/etc/udev/ /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/boot.local admin@$remote:/etc/rc.d/boot.local echo "$remote end"; done 

Т.к. некоторые ПК могут быть выключенными, запуск скрипта выполняется с выводом всей информации в лог и последующим анализом:

PS. Планы на будущее
  • безопасность передачи информации при POST запросе
  • убрать логирование служебных файлов (например Thumbs.db)
  • теневое копирование файлов, над которыми были произведены какие-либо действия.

Источник

Оцените статью
Adblock
detector