From: "Денис Смирнов" <mithraen@freesource.info> To: community@lists.altlinux.org Subject: Re: [Comm] автомонтирование без DE Date: Tue, 29 Jul 2014 20:16:19 +0400 Message-ID: <20140729161619.GB7385@mw.mithraen.ru> (raw) In-Reply-To: <3406861406630905@web13j.yandex.ru> [-- Attachment #1.1: Type: text/plain, Size: 1825 bytes --] On Tue, Jul 29, 2014 at 02:48:25PM +0400, Speccyfighter wrote: > - lsblk, который придётся грепать инверсией НЕ, иначе выбросит > листингом не только съёмные wtf HE? И как определить съемные? Я тут обнаружил, что в /sys/block/sdk/removable у меня '0', при том что sdk это флешка. > (у себя при двух hdd и usb-hdd это выбросит 20 файловых систем - > здесь нельзя не грепать) А если грепать исключая содержимое fstab? > - blkid, который надо будет вкручивать через sudo и беспарольку для > blkid -s LABEL -s TYPE /dev/что Зачем blkid, когда есть lsblk? $ lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,RM > - плюс ко всему этому, надо будет вкрутить alias'ы, чтобы отбросить > "мусор" и упростить ввод до уровня hmount: показать всё, кроме съёмных. > Возможно алиасом или скриптом для аналога 'hmount -l' Я попробовал написать такой скрипт, и у меня возникла проблема -- я не могу определить что есть съемные устройства. Ибо флешка, как оказалось, не съемное устройство. > У меня как блочные usb используются: > 4 флешки + 2 microSD + usb-hdd > (Конец ли это?) > А угадывать, что есть что, желания никакого. Разумеется. > Всё это требует подготовки, и подготовки под каждую конкретную > конфигурацию вместо одного единственного > hmount -l > который всё это показывает сразу и без преконфигурирования. > Не требуя от пользователя какого-либо мало-мальски серьёзного знания > внутренностей системы и предварительной подготовки. > Не считая запущенный hal естественно. > Вот если смотреть под таким углом, то 'hmount -l', это да, > именно киллер фича. > Которая у себя видится в сравнении вот так. В аттаче макет скрипта, который вероятно выполняет эту задачу. Пожалуйста, посмотрите делает ли он то, что вы хотите. -- С уважением, Денис http://mithraen.ru/ [-- Attachment #1.2: lmount --] [-- Type: text/plain, Size: 2580 bytes --] #!/usr/bin/perl -w #============================================================================# # List all block devices that not exists in fstab # #============================================================================# # (C) Denis Smirnov <mithraen@freesource.info> # #============================================================================# use strict; use warnings qw(FATAL all); use utf8; use open qw(:utf8 :std); use Cwd 'abs_path'; my @lsblk = split( "\n", `/bin/lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,RM,KNAME,MODEL,TYPE,UUID -P` ); my %disks; my %fstab_dev; my %fstab_uuid; my %fstab_label; sub parse_fstab() { open( my $fh, "<", "/etc/fstab" ) || die; while (<$fh>) { s/#.*//; next if /^\s*$/; s/\s+.*$//; s/\s+$//; if (/^LABEL=\"([^\"]+)\"/) { $fstab_label{$1} = 1; } elsif (/^LABEL=([^\"]+)/) { $fstab_label{$1} = 1; } if (/^UUID=\"([^\"]+)\"/) { $fstab_uuid{$1} = 1; } elsif (/^UUID=([^\"]+)/) { $fstab_uuid{$1} = 1; } else { my $dev = $_; $dev = abs_path($dev) if -l $dev; $fstab_dev{$dev} = 1; } } close($fh); } sub parse_line($) { my $fields = $_[0]; my %h; while ( $fields =~ s/^\s*([^"]+)="([^\"]*)"\s*// ) { $h{$1} = $2; } my $dev = $h{KNAME}; if ( $h{TYPE} eq 'disk' ) { $disks{$dev} = \%h; } if ( $h{TYPE} eq 'part' ) { my $basedev = $dev; $basedev =~ s/\d+$//; foreach my $key ( keys %h ) { if ( $h{$key} eq '' ) { $h{$key} = $disks{$basedev}->{$key}; } } } # return if $h{RM} eq '0'; return if $h{FSTYPE} eq ''; return if $h{FSTYPE} eq 'swap'; return if $h{FSTYPE} eq 'linux_raid_member'; return if $h{FSTYPE} eq 'LVM2_member'; # skip LVM partitions return if $h{TYPE} eq 'lvm'; # skip FS in fstab return if defined $fstab_label{ $h{LABEL} }; return if defined $fstab_uuid{ $h{UUID} }; return if defined $fstab_dev{ "/dev/" . $h{KNAME} }; return \%h; } use Data::Dump qw/ddx/; parse_fstab; my @out; foreach (@lsblk) { my $h = parse_line($_); next unless defined $h; # ddx $h; my $dev = "/dev/" . $h->{KNAME}; push @out, $dev; } my $devices = join( ' ', @out ); print `/bin/lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,RM,KNAME,MODEL,TYPE,UUID -l $devices`; [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2014-07-29 16:16 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-07-23 16:50 Денис Смирнов 2014-07-23 20:54 ` Michael Shigorin 2014-07-24 8:35 ` Денис Смирнов 2014-07-24 8:57 ` Michael Shigorin 2014-07-24 12:55 ` Владимир Гусев 2014-07-28 23:36 ` Денис Смирнов 2014-07-29 3:55 ` Eugene Prokopiev 2014-07-29 15:10 ` Денис Смирнов 2014-07-24 18:00 ` Speccyfighter 2014-07-24 19:41 ` Фаизов Алишер 2014-07-24 19:49 ` Speccyfighter 2014-07-24 21:21 ` Mikhail Efremov 2014-07-24 23:09 ` Speccyfighter 2014-07-28 23:41 ` Денис Смирнов 2014-07-29 10:48 ` Speccyfighter 2014-07-29 10:52 ` Speccyfighter 2014-07-29 16:16 ` Денис Смирнов [this message] 2014-07-29 18:13 ` Speccyfighter 2014-07-29 19:20 ` Денис Смирнов 2014-07-29 19:52 ` Speccyfighter 2014-07-29 19:59 ` Speccyfighter 2014-07-30 0:52 ` Денис Смирнов 2014-07-30 3:26 ` Speccyfighter 2014-07-30 18:11 ` Денис Смирнов 2014-07-31 2:00 ` Speccyfighter 2014-07-31 14:06 ` Денис Смирнов 2014-07-31 14:39 ` Speccyfighter 2014-07-31 16:47 ` Денис Смирнов 2014-07-31 17:35 ` Speccyfighter 2014-07-31 19:05 ` Денис Смирнов 2014-08-01 0:47 ` Speccyfighter 2014-08-01 2:43 ` Денис Смирнов 2014-08-01 17:13 ` Speccyfighter 2014-08-02 14:09 ` Денис Смирнов 2014-08-02 18:51 ` Speccyfighter 2014-08-03 3:58 ` Денис Смирнов 2014-08-03 14:22 ` Speccyfighter 2014-08-03 19:46 ` Денис Смирнов 2014-08-03 22:33 ` Speccyfighter 2014-08-04 13:29 ` Денис Смирнов 2014-08-05 15:15 ` Speccyfighter 2014-08-05 18:43 ` Денис Смирнов 2014-08-06 12:55 ` Speccyfighter 2014-08-06 21:52 ` Денис Смирнов 2014-08-07 0:24 ` Speccyfighter 2014-08-07 15:56 ` Speccyfighter 2014-08-07 16:14 ` Speccyfighter 2014-08-07 16:55 ` Денис Смирнов 2014-08-07 17:07 ` Speccyfighter 2014-08-08 3:28 ` Денис Смирнов 2014-08-09 19:50 ` Michael Shigorin 2014-08-15 9:52 ` Денис Смирнов 2014-08-15 10:22 ` Michael Shigorin 2014-08-15 11:26 ` Денис Смирнов 2014-08-04 18:35 ` Michael Shigorin 2014-07-30 4:46 ` Speccyfighter 2014-07-30 5:31 ` Speccyfighter 2014-07-30 14:41 ` Денис Смирнов 2014-07-30 16:39 ` Speccyfighter 2014-07-29 19:27 ` Speccyfighter 2014-07-29 19:04 ` Speccyfighter 2014-07-30 0:10 ` Денис Смирнов 2014-07-30 9:23 ` Michael Shigorin 2014-07-30 14:39 ` Денис Смирнов 2014-07-30 9:38 ` Sergey 2014-07-30 11:16 ` Sergey
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20140729161619.GB7385@mw.mithraen.ru \ --to=mithraen@freesource.info \ --cc=community@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git