如何知道哪个 sdb 是 USB 闪存盘?

如何知道哪个 sdb 是 USB 闪存盘?

我编写了一个脚本,用于格式化 USB 闪存盘并将媒体放置在其中。 它可以帮助图书馆中的人们获取大量 HTML 和媒体来浏览历史数据(官方版本)。

我的所有脚本都能很好地完成工作(格式化、安装、复制、卸载、说“再见”)。但有一点:如何知道我应该浏览哪个设备。

只有一个条件:仍插入最多 1 个 U 盘。

通常每天会有 3 个人来将他们的(USB!)棒插入这台机器(它看起来像一台信用卡付款机)。

我的问题 请帮忙,我不知道该怎么做才能说出我的脚本:

嘿,唯一的 USB 设备是 /dev/sdX1

或者

嘿,我的 I/O 中没有 USB 闪存盘。

谢谢

答案1

使用findawk

#!/bin/bash

# your code ...

# The name of your MAXimum 1 drive in /media/$USER
maximum1="MAXimum 1"

if [ -z "$(find /media/$USER/ -maxdepth 1 ! -path /media/$USER/ -type d |\
    awk '! /'"$maximum1"'/')" ]
then
    echo "Hey, the only USB device is $maximum1"
else
    echo "Hey, no USB pendrive in my I/O."
fi

# your code ...

例子

% ls -laog /media/$USER

total 24
drwxr-x---+ 3  4096 Aug 20 15:16 .
drwxr-xr-x  5  4096 Aug 18 08:43 ..
drwxr-xr-x  8 16384 Jan  1  1970 STORE N GO

% maximum1="STORE N GO"; if [ -z "$(find /media/$USER/ -maxdepth 1 ! -path /media/$USER/ -type d | awk '! /'"$maximum1"'/')" ]; then echo "Hey, the only USB device is $maximum1"; else echo "Hey, no USB pendrive in my I/O."; fi
Hey, the only USB device is STORE N GO

% maximum1="NOT STORE N GO"; if [ -z "$(find /media/$USER/ -maxdepth 1 ! -path /media/$USER/ -type d | awk '! /'"$maximum1"'/')" ]; then echo "Hey, the only USB device is $maximum1"; else echo "Hey, no USB pendrive in my I/O."; fi
Hey, no USB pendrive in my I/O.

答案2

Ubuntu 有一个简洁的命令,允许使用标志指定的块设备上的选项udisksctl查找信息。info-b

现在,如果我们从 a 到 z 扫描每个块设备的输出udiskctl,并在其中搜索“usb”字符串,我们就可以确定它是一个 USB 设备。

下面是一个可以完成这一任务的脚本:

#!/bin/bash

FOUND=0
for var in {a..z}; do 

    udisksctl info -b /dev/sd$var 2>/dev/null | grep -q 'usb'; 
    if [ $(echo $?) -eq 0 ]; then 
        echo " FOUND USB DEVICE /dev/sd$var "; 
        FOUND=1
    fi 


done 

if [ $FOUND -eq 0 ]; then
    echo "NO USB DEVICES FOUND"
fi

我们有FOUND标志,它的作用是打印“未找到 USB 设备”,如果……嗯……没有找到 USB 设备!否则,如果我们找到至少一个 USB 设备,我们将该标志设置为 1 并忽略它。

以下是插入并移除两个 USB 后的示例输出:

CURRENT DIR:[/home/xieerqi]
$ ./bin/sh/findusb.sh                                                                                                                         
 FOUND USB DEVICE /dev/sdb 
 FOUND USB DEVICE /dev/sdc 

CURRENT DIR:[/home/xieerqi]
$ ./bin/sh/findusb.sh                                                                                                                         
NO USB DEVICES FOUND

请随意修改此脚本以满足您的需要。

相关内容