IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   Как прочестьв скриптом информацию о диске (https://www.imho.ws/showthread.php?t=109702)

shuron 14.10.2006 21:43

Как прочестьв скриптом информацию о диске
 
Надо как-то скриптом на линуксе
узнать, замонтирован ли определённый диск ну это я ещё наверное сомогу
а вот как узнать как он замонтирован. Как узнать замонтирован ли он readonly. Надо в зависимоти от этогопинять действия..

Как бы это по проще и эффективнее ?

Заранее благодарен

noname 15.10.2006 14:34

#!/usr/bin/perl
$hdd = $ARGV[0];
open (F,"</proc/mounts") or die "error $!\n";
@drive = grep(/$hdd/,<F>);
$drive[0] =~ s/^.*(rw|ro).*$/$1/;
print $drive[0];

это так для примера , можно через http://search.cpan.org/~nicolaw/Sys-.../Filesystem.pm

и т.д.

shuron 15.10.2006 15:46

спасибо..
но Перлом не хотелось бы..
так как это хочу использовать в дургом скрипте бэк апа который накатал..
на bash . Хотелось вот только ещё проверку диска на то как он монтанут узнать..
сморю что на что монтанутао уже так..
test= ´df | grep $2 | awk '{print $1}'´

Можно поидеи также прочесть какой нибудь комаджной как устройство замонтировано.. и парзнуть ответ. но я не заню какой

например Usb disk если вставляю он автоматом Read only монтируется..
настроить это может и можно.. но наждо что бы скрипт сам умел роапозновать.

Zes 15.10.2006 16:49

Цитата:

Сообщение от shuron
Надо как-то скриптом на линуксе
узнать, замонтирован ли определённый диск ну это я ещё наверное сомогу
а вот как узнать как он замонтирован. Как узнать замонтирован ли он readonly. Надо в зависимоти от этогопинять действия..

Как бы это по проще и эффективнее ?

Заранее благодарен


mount -v| grep "ro" | awk '{print $3}'

одновременно покажет тебе и то,что смонтированно и (если) для чтения только.
Вместо "ro" можно поставить переменную ( $TEST) и искать любые параметры (имя файл система и.т.д)

shuron 15.10.2006 17:29

Ага спасибо! я и не знал что моунт этопоказывает..
А последний вопрос а как посмотреть диски которые не примонтированы, но могут быть примонтированы? Тоесть все показать?

Zes 15.10.2006 18:37

Цитата:

Сообщение от shuron
Ага спасибо! я и не знал что моунт этопоказывает..
А последний вопрос а как посмотреть диски которые не примонтированы, но могут быть примонтированы? Тоесть все показать?

есть несколько методов,можно посмотреть все диски (SCSI,IDE) + партишены с "fdisk -l /dev/[h,s]d[a-z]"

формат конечно не самый удобный. Есть ещё одна утилитка - "lshw" ,которая в некоторых линуксах идёт дефолтом (Сусе,кажется) - Я её сбилдил и закинул на все серверы одним файлом. Весьма удобна,показывает железо в иерархическом списке,а-ля дерево :)
Партишены правда не показывает.

Hubbitus 17.10.2006 11:11

cat /etc/fstab
не подойдет просто?

shuron 18.10.2006 16:00

net ne pojdet..
diski mogut potklu4atsa dinamichski po USB naprimer

crawler 19.10.2006 00:44

/etc/fstab описывает все что может быть подключено и способы подключения.
/etc/mtab показывает только подключенные устройства (mounted) и динамически обновляется.

А еще есть /etc/auto.removable (один из файлов autofs) ;)

shuron 19.10.2006 12:14

Ааа ну тогда дургое дело, надо помотреть может можно импользовать.

shuron 10.11.2006 15:35

Обнаружилась.. досадная вещь..
mount -v и /etc/mtab не всегда отображают актуальный статус.. иногда по каким тоо причинам мой усб-девайс в "ro" переходит (еще не успел отследить когда именно) A /etc/mtab об это причем ничего не узнает и дальше думает что девайс примонтирован с "rw". А в свою очередь mount помойму инфу тупо от туда же и считывает.

Тоесть оба способа (moun и /etc/mtab) узнать инфо о том как промаунтен девайс работают не коректно.

Есть ещё может и деи более точные..
Поидее можно тестовый вайл пвтаться создавать с на ro диске и читать ошибку и парзовать и догадываться.. но тут есть один но если стоит локаль то сообщение об ошибке на языке локали.. как бы это сделать с универсальнвм кодом ошибки? или может вооюще подругому. Короче вопрос топика все ещё актуален!
:confused: :confused: :beer:

KomatoZo 10.11.2006 16:19

shuron
Выскажу мысли своего спинного мозга, потому что головной все это уже успел забыть:
по идее все, что происходит на машине должно находить свое отражение в /proc...
Но может быть я и не прав.

shuron 11.11.2006 18:13

Коматозо, у тебя моощняцкий спинной мозг!
Короче я тут две вещи обнаружилв /proc
вопервых это /proc/@mounts там тоже что и в /etc/mtab только вроде бы с актуальным статусом... можнопопробовать скриптом смотреть здесь.. (Я надеюсь этоть файл не только в моей версии ядра, но более или менне постоянно присутствует в системе..)

Но более странным покзался мне вот этот файл.. /proc/cmdline
Там следующая срока:
Код:

root=/dev/hda1 ro
/dev/hda1 это как раз то устройство котрое иногда преходит в ro из-за котрого весть это топик то и создался.. буду щас сним эксперементировать, может подскажете пока что это за штука и откуда берется?? :beer:

Zes 12.11.2006 15:04

Цитата:

shuron:
Но более странным покзался мне вот этот файл.. /proc/cmdline

Это не файл,а хранящаяся в кернеле информация о параметрах,которые были переданы кернелу во время последнего запуска (kernel boot time parameters). Вообще,/proc это не файлы а информация,содержащаяся в сидящем в памяти кернеле (ядре Линукса).

"ro" "только для чтения" параметры передаются обычно через (GRUB) /boot/grub/grub.conf (LILO) - /etc/lilo.conf.
Во время запуска оно и должно быть "ro"(кажется это требует fsck). На более поздних этапах оно монтируется
уже как "rw".

shuron 13.11.2006 19:36

Это мне не помаголо.. про /proc знал..
а файлов /boot/grub/grub.conf и /etc/lilo.conf просто нет или может они лежат где-то не там, да и делам моим они не помогут

Zes 14.11.2006 04:04

Цитата:

shuron:
а файлов /boot/grub/grub.conf и /etc/lilo.conf просто нет или может они лежат где-то не там, да и делам моим они не помогут
/dev/hda1 вроде как не USB-device вообще. А в "ro" переходит во время запуска системы,потом уходит в
"rw". Хочешь поточнее - запусти xterm,в нём комманду "tail -f /var/log/messages",подключи свой usb диск и смотри как он определяется.

helldomain 16.11.2006 07:35

1. W proc nahoditsya tolko to, chto opredeleno kernelom w dannij moment (naprimer spisok kontrollerow, block devices i.t.d.). To, na chto ne zagrujeni moduli (ili to, chto ne inicializirowanno, to kernel ne widit). Primer: LVM.
2. Pri ispolzowanii udevd device files w /dev sozdajutsya awtomaticheski. Potomu skanit /dev smisla ne imeet.
3. Princip opredelniya block devices i ih partow (s uchetom togo, chto wse moduli zagrujeni):
- Obnowit spisok block devices (naprimer cherez ioctl).
- Otrabotat sozdanie dev.
- Prochitat proc.
Kak eto sdelat prawilno - smotri kak rabotaet modul vgchange s parametrom -ay iz paketa LVM2. Eto kodili rebyata iz sistini (potom ih kupil rh), a oni w takih weschah tolk znali.

USB mojno zamontirowat kak ugodno, da i woobsche chto ugodno. Zawisit ot ispolzuemoi biblioteki urownya predstawleniya i nastroiki sistemi. Skanit dev ne znaya, chto za chto otwechaet durnoi ton.
Цитата:

Сообщение от Zes
/dev/hda1 вроде как не USB-device вообще. А в "ro" переходит во время запуска системы,потом уходит в
"rw". Хочешь поточнее - запусти xterm,в нём комманду "tail -f /var/log/messages",подключи свой usb диск и смотри как он определяется.

P.S. Eshe odin sposob poluchit dannie o diskah i razdelah - ispolzowat metodi demonow hotplug + udev.

shuron 16.11.2006 12:35

Ну на данный момент я смотрю
в /proc/mounts
на то как монтирован диск..
Если он ro монтирован, то я его отмантирываю и примонтриую заного rw (так как mount -o remount,rw не срабатывал).
И пока вроде работает, правда теслтировал наспех, многолетних рабочих испытаний ещё небыло.;)
за теоретическую часть всем спасибо!


Часовой пояс GMT +4, время: 00:22.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.