![]() |
Как прочестьв скриптом информацию о диске
Надо как-то скриптом на линуксе
узнать, замонтирован ли определённый диск ну это я ещё наверное сомогу а вот как узнать как он замонтирован. Как узнать замонтирован ли он readonly. Надо в зависимоти от этогопинять действия.. Как бы это по проще и эффективнее ? Заранее благодарен |
#!/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 и т.д. |
спасибо..
но Перлом не хотелось бы.. так как это хочу использовать в дургом скрипте бэк апа который накатал.. на bash . Хотелось вот только ещё проверку диска на то как он монтанут узнать.. сморю что на что монтанутао уже так.. test= ´df | grep $2 | awk '{print $1}'´ Можно поидеи также прочесть какой нибудь комаджной как устройство замонтировано.. и парзнуть ответ. но я не заню какой например Usb disk если вставляю он автоматом Read only монтируется.. настроить это может и можно.. но наждо что бы скрипт сам умел роапозновать. |
Цитата:
mount -v| grep "ro" | awk '{print $3}' одновременно покажет тебе и то,что смонтированно и (если) для чтения только. Вместо "ro" можно поставить переменную ( $TEST) и искать любые параметры (имя файл система и.т.д) |
Ага спасибо! я и не знал что моунт этопоказывает..
А последний вопрос а как посмотреть диски которые не примонтированы, но могут быть примонтированы? Тоесть все показать? |
Цитата:
формат конечно не самый удобный. Есть ещё одна утилитка - "lshw" ,которая в некоторых линуксах идёт дефолтом (Сусе,кажется) - Я её сбилдил и закинул на все серверы одним файлом. Весьма удобна,показывает железо в иерархическом списке,а-ля дерево :) Партишены правда не показывает. |
cat /etc/fstab
не подойдет просто? |
net ne pojdet..
diski mogut potklu4atsa dinamichski po USB naprimer |
/etc/fstab описывает все что может быть подключено и способы подключения.
/etc/mtab показывает только подключенные устройства (mounted) и динамически обновляется. А еще есть /etc/auto.removable (один из файлов autofs) ;) |
Ааа ну тогда дургое дело, надо помотреть может можно импользовать.
|
Обнаружилась.. досадная вещь..
mount -v и /etc/mtab не всегда отображают актуальный статус.. иногда по каким тоо причинам мой усб-девайс в "ro" переходит (еще не успел отследить когда именно) A /etc/mtab об это причем ничего не узнает и дальше думает что девайс примонтирован с "rw". А в свою очередь mount помойму инфу тупо от туда же и считывает. Тоесть оба способа (moun и /etc/mtab) узнать инфо о том как промаунтен девайс работают не коректно. Есть ещё может и деи более точные.. Поидее можно тестовый вайл пвтаться создавать с на ro диске и читать ошибку и парзовать и догадываться.. но тут есть один но если стоит локаль то сообщение об ошибке на языке локали.. как бы это сделать с универсальнвм кодом ошибки? или может вооюще подругому. Короче вопрос топика все ещё актуален! :confused: :confused: :beer: |
shuron
Выскажу мысли своего спинного мозга, потому что головной все это уже успел забыть: по идее все, что происходит на машине должно находить свое отражение в /proc... Но может быть я и не прав. |
Коматозо, у тебя моощняцкий спинной мозг!
Короче я тут две вещи обнаружилв /proc вопервых это /proc/@mounts там тоже что и в /etc/mtab только вроде бы с актуальным статусом... можнопопробовать скриптом смотреть здесь.. (Я надеюсь этоть файл не только в моей версии ядра, но более или менне постоянно присутствует в системе..) Но более странным покзался мне вот этот файл.. /proc/cmdline Там следующая срока: Код:
root=/dev/hda1 ro |
Цитата:
Это не файл,а хранящаяся в кернеле информация о параметрах,которые были переданы кернелу во время последнего запуска (kernel boot time parameters). Вообще,/proc это не файлы а информация,содержащаяся в сидящем в памяти кернеле (ядре Линукса). "ro" "только для чтения" параметры передаются обычно через (GRUB) /boot/grub/grub.conf (LILO) - /etc/lilo.conf. Во время запуска оно и должно быть "ro"(кажется это требует fsck). На более поздних этапах оно монтируется уже как "rw". |
Это мне не помаголо.. про /proc знал..
а файлов /boot/grub/grub.conf и /etc/lilo.conf просто нет или может они лежат где-то не там, да и делам моим они не помогут |
Цитата:
"rw". Хочешь поточнее - запусти xterm,в нём комманду "tail -f /var/log/messages",подключи свой usb диск и смотри как он определяется. |
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. Цитата:
|
Ну на данный момент я смотрю
в /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.