digger123 Napisano Luty 5, 2010 Zgłoszenie Share Napisano Luty 5, 2010 Witam jesttem tutaj nowy niezaprzeczam mmam pytanko. potrzebuje machnac cos takiego jak w tytule. potrzebuje sformatowac kilka dyskow "naraz" albo "osobno" na ext3 wszystko bedzie podpiete pod karte advanteha sata wykorzystujaca HOTPLUG, potrzebuje napisac cos takiego ( dla usera ) ze se kliknie na przycisk GO dysk sie sformatuje i juz, i tak chociaz dla 1 dysku reszte ogarne, nie wiem jak sie zabardzo za to zabrac szczegolnie ze ma byc to w Hotplug-u. problem polega na tym ze potrzebuje sformatowac w EXT3 kolo 200-350 dyskow za wszelkie sugestie jak to ugryzc THX Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 5, 2010 Zgłoszenie Share Napisano Luty 5, 2010 Podłączasz dysk i uruchamiasz skrypt (szkic) #!/bin/bash lista_menu(){ for p in $( fdisk -l | grep '^/dev/' | cut -d' ' -f1 ); do echo "TRUE $p " done } menu(){ zenity --title "Formatowanie Dysków" --text "bedzie formacik panie?" \ --width=400 --height=300 \ --list --checklist \ --column="zaznacz" --column "partycja" \ $(lista_menu) \ --separator " " --multiple \ --print-column=2 } for d in $(menu); do echo "mkfs.ext3 $d" done o to chodziło mniej więcej :?: Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
qmic Napisano Luty 6, 2010 Zgłoszenie Share Napisano Luty 6, 2010 Ja to bym jeszcze podłączył ten skrypt pod jakiś messagebus or something w celu pełnej automatyzacji Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 6, 2010 Autor Zgłoszenie Share Napisano Luty 6, 2010 witam Tak dokladnie o takie cos mi sie rozchodzi nie mniej jednak jakos nie mogo zmusic skryptu do rozpoznania podlaczonego dysku - jakies sugestie ?? w bash-u mam liste dyskow ale za chiny nie moge tego przezucic do skryptu Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 7, 2010 Zgłoszenie Share Napisano Luty 7, 2010 Zaraz zaraz, ale mówimy o czystych dyskach? Ups Ten skrypt wyżej to wyłapywał już istniejące partycje. Wszystko da się zautomatyzować, ale czy nie możesz użyć po prostu http://gparted.sourceforge.net ? Ja to bym jeszcze podłączył ten skrypt pod jakiś messagebus or something w celu pełnej automatyzacji mówisz masz #!/bin/bash lista_menu(){ for p in $( fdisk -l $1 | grep '^/dev/' | cut -d' ' -f1 ); do echo "TRUE $p " done } menu(){ zenity --title "Formatowanie Dysków" --text "bedzie formacik panie?" \ --width=400 --height=300 \ --list --checklist \ --column="zaznacz" --column "partycja" \ $(lista_menu $1) \ --separator " " --multiple \ --print-column=2 } disk_format(){ for d in $(menu $1); do echo "mkfs.ext3 $d" done } get_device(){ echo "$1" \ | grep "interface=org.freedesktop.DeviceKit.Disks.Device" \ | cut -d'/' -f7 \ | cut -d';' -f1 } dbus_out(){ dbus-monitor --system --monitor interface="org.freedesktop.DeviceKit.Disks.Device" } dbus_read(){ while read line; do DISK=$( get_device "$line" ) for a in {a..z}; do if [ "$DISK" == "sd${a}" ]; then disk_format /dev/$DISK break fi done done } dbus_out | dbus_read To jest wersja dla hotplug pendrive, który u mnie pojawia się jako sdc, czyli powinno być ok dla zwykłych dysków. Kurcze nie wiedziałem jak zrobić coś w rodzaju sd[a-z] chyba że to kwestia literówki i dlatego taki brzydki for. Po uruchomieniu skrypt sobie cichutko nasłuchuje i jak podłącze pendriva to jest event z menu tylko dla tego podłączonego dysku. [EDIT] poprawiłem skrypt, teraz zareaguje na dowolny dysk sda-sdz Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 7, 2010 Autor Zgłoszenie Share Napisano Luty 7, 2010 witam czy ta fedore trzeba jeszcze jakos specjalnie uaktualnic bo nic nie chce sie uruchomic z wyzej podanego skryptu. przejzalem kod i dokladnie o takie cos mi sie rozchodzilo, nie moge znalezc dlaczego to nie chce ruszyc. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 7, 2010 Zgłoszenie Share Napisano Luty 7, 2010 Jedynie zenity trzeba doinstalować, wszystko inne to podstawowe komponenty fedory. yum install zenity Nie napisałeś nic konkretnego więc nie wiem co Ci może nie działać. Gdybyś chociaż spróbował rozłożyć ten skrypt na poszczególne kroki to byś miał jakieś dane. 1) Pokaż wynik polecenia fdisk -l ( parametr to l jak lampa, nie jedynka) i napisz, który to dysk w tych wynikach 2) Wpisz polecenie dbus-monitor --system --monitor interface="org.freedesktop.DeviceKit.Disks.Device" podłącz dysk i po paru sekundach powinien się się jakiś monit pojawić. Wklej tutaj całe wyjście. ps. jeśli nie potrafisz tego skryptu rozłożyć na części i dostosować do własnych potrzeb to może lepiej żebyś skorzystał z gparted, bo odpowiadasz tak jakbyś był nowicjuszem, a nie mam ochoty tłumaczyć każdego kroku w skrypcie. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 7, 2010 Autor Zgłoszenie Share Napisano Luty 7, 2010 a wiec tak zenity mam zainstalowane - takze to nie to. fdisk wyrzuca cos takiego ( wiem ze l nie 1 ) Disk /dev/dm-0 doesn't contain a valid partition table Disk /dev/dm-1 doesn't contain a valid partition table /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb1 /dev/sdb5 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sde2 /dev/sde5 /dev/sde6 /dev/sdf1 Dbus wyrzuca cos takiego signal sender=org.freedesktop.DBus -> dest=:1.46 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired string ":1.46" problem polega na tym ze (_wogole_ ? w ogóle) ORT tego skryptu nie moge uruchomic ( - tak atrybuty sa nadane ), krok po kroku wyglda na dzialajacy ale razem ni huhuhu uzywam fedory z USB jesli to ma jakies znaczenie bez $1 w wersji bez dbus odpala zenity ale tak jakby nieczytalo listy dev z $, okno zenity jest pusciutkie a w konsoli mam liste, kiedys cos tam dlubalem sobie w skrypcikach ale zardzewialem lekko prze ostatnie 3 lata jeszcze raz wyjasnie o co dokladnie mi chodzi potrzebuje sformatowac ok 300hdd na ext3, ma to wygladac tak podlaczam dysk ( hot plug na sata ) to lata klikam sobie w zenity ten dysk formatuje go wycigam dysk podlaczam nastepny klikam itd. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 7, 2010 Zgłoszenie Share Napisano Luty 7, 2010 * Może ten błąd "Disk /dev/dm-0 doesn't contain a valid partition table" rozwala listę. Skasuj błędy 2>/dev/null ten kod lista_menu(){ for p in $( fdisk -l $1 2>/dev/null | grep '^/dev/' | cut -d' ' -f1 ); do echo "TRUE $p " done } lista_menu musi wyświetlać dane w takim formacie i nic poza tym TRUE /dev/sdb1 TRUE /dev/sdb2 TRUE /dev/sda1 TRUE /dev/sda2 TRUE /dev/sda5 TRUE /dev/sda6 TRUE /dev/sda7 Swoją drogą co to za urządzenie /dev/dm-0 ? to nie są przypadkiem dyski z LVM? jeśli LVM jest na tych podłączanych dyskach to musisz to trochę przebudować, a jak nie to tylko zadbaj o to by się nie pojawiało. * sygnał z dbus, który podałeś pojawia się u mnie jeszcze przed podłączeniem pendriva, a po podłączeniu pojawia się następny i to o niego chodzi. Jeśli nic nie widać w ciągu paru sekund to użyj w konsoli (ale nie w skyrpcie! ) --profile zamiast --monitor dla mniej gadatliwych komunikatów dbus-monitor --system --profile Zobacz który wiersz zawiera nazwę dysku i kombinuj. reszta: man dbus-monitor Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 8, 2010 Autor Zgłoszenie Share Napisano Luty 8, 2010 rozbilem skrypt na kroczki lista_menu(){ for p in $( fdisk -l $1 2>/dev/null | grep '^/dev/' | cut -d' ' -f1 ); do echo "TRUE $p " done } lista_menu wynik TRUE /dev/sda1 TRUE /dev/sda5 TRUE /dev/sdc1 TRUE /dev/sdb1 TRUE /dev/sdd1 TRUE /dev/sdd2 TRUE /dev/sdd5 TRUE /dev/sdd6 TRUE /dev/sde1 TRUE /dev/sde2 TRUE /dev/sde5 TRUE /dev/sdg1 TRUE /dev/sdf1 zenity w terminalu odpala mi okienko w ktorym tak jak powinno sa wszystkie dyski ale jak proboje to odpalic w skrypcie to okno zenity jest puste - dlaczego ?? w terminalu chodzi a w skrypcie nie chce - jak znam zycie to jakis czeski blad tylko ze go nie moge znalezc - ktos mi moze pomoc dzieki Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 8, 2010 Zgłoszenie Share Napisano Luty 8, 2010 * no skoro z jednej funkcji masz już poprawne wyjście to przejdź do drugiej, czyli dodaj teraz funkcję menu() itd. małymi kroczkami. Jeśli naprawdę masz takie trudności z tym skryptem to może poćwicz najpierw robienie krótszych skryptów i okienek zenity. Poza tym, nie widzę Twoich błędów, a u mnie to działa, więc jak do cholery mam pomóc Ci ja lub ktokolwiek inny? Pokaż jak uprościłeś ten kod, pokaż próby które poczyniłeś, pokaż wyjście z terminala dla nie działających skryptów. Jeśli dalej będziesz się ograniczał tylko do wypowiedzi "nie działa mi" to darujmy sobie dalszą pogawędkę. Poćwicz, porób kilka skryptów i wtedy wróć. Może bash to nie Twój język, może na co dzień programujesz w czymś innym, może lepiej zrobić to w tym w czym potrafisz. * i w trochę innej sprawi. Przypadkiem zostawiłem ten skrypt włączony i po paru minutach nagle zadziałał po raz drugi sam z siebie. Ozn. to tylko tyle, że dbus sprawdza okresowo stan. Wniosek jest prosty: wyłącz jak skończysz Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 9, 2010 Autor Zgłoszenie Share Napisano Luty 9, 2010 ok postaram wyjasnic sie moj problem jeszcze raz, skrypt "dziala" ale tylko w konsoli. jesli uruchomie kazdy z krokow z osobna to lepiej albo gozej cos tam jest ( kwestia jeszcze dopasowania) ale jak tylko chce chocby uruchomic lista_menu i menu w 1 skrypcie to albo kompletnie nic sie niedzieje ( brak jakichkolwiek oznak nawet w terminalu albo odpala sie puste okienko zenity ( sporadycznie jest tam checkbox ), i nie za bardzo moge znalezc gdzie lezy przyczyna, natomiast jak odpale menu() z terminala to piekniepokazuje mi to co ma pokazywac. p.s. kazda z definicji musi konczyc sie nazwa tej definicji n.p. menu() { bla bla bla } menu bo jak sobie daruje to ostanie menu to (_wogole_ ? w ogóle) ORT skrypt nie chce sie uruchomic moze musze u siebie cus doinstalowac zeby to zagralo wyglada jakby skrypt omija pierwsza definicje lista_menu () robi jakgdyby tylko ta druga ( obciolem to tylko do tych dwoch pierwszych ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 9, 2010 Autor Zgłoszenie Share Napisano Luty 9, 2010 obcilem to tylko do podstawowych 3 funkcji #!/bin/bash lista_menu() { for p in $( fdisk -l $1 2>/dev/null | grep '^/dev/' | cut -d' ' -f1 ); do echo "TRUE $p " done } lista_menu menu() { zenity --title "Formatowanie Dysków" --text "bedzie formacik panie?" \ --width=400 --height=300 \ --list --checklist \ --column="zaznacz" --column "partycja" \ $(lista_menu $1) \ --separator " " --multiple \ --print-column=2 ; } disk_format() { for d in $(menu $1); do echo "mkfs.ext3 $d" done } disk_format i dziala jak narazie z tym ze na wyjsciu w konsoli mam cos takiego TRUE /dev/sda1 TRUE /dev/sda5 TRUE /dev/sdb1 TRUE /dev/sdc1 TRUE /dev/sdc2 TRUE /dev/sdc5 TRUE /dev/sdd1 TRUE /dev/sde1 TRUE /dev/sde2 TRUE /dev/sde5 TRUE /dev/sde6 TRUE /dev/sdg1 TRUE /dev/sdf1 mkfs.ext3 /dev/sdf1 z tym ze formatowanie sie nie odbywa mkfs.ext3 /dev/sdf1 jest wyswietlane jako tekst nie jeako cos wykonywalnego. moglby mi ktos pomoc z tym. nigdy nie uzywalem fedory, kiedys pisalem pare skryptow ale ten zaczyna mnie po malu denerwowac bo labo mam cos nie tak z swoja instalacja albo nie wiem pozatym jak odpale ten skrypt z terminala to chodzi ( oprocz tego formatowania ) ale jak tylko sproboje kliknac na niego normalnie to uruchamia sie tylko menu() i okno zenity reszta jest jakby niewykonywana. Wiem ze na forum sa osoby dla ktorych te problemy to pryszcz dlatego prosze o pomoc w zaoszczedzeniu dupo-godzin przed monitorem Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Luty 10, 2010 Zgłoszenie Share Napisano Luty 10, 2010 "lista_menu" jest uruchamiana raz wewnątrz funkcji "main" a nie pod zapisem definicji funkcji jak to zrobiłeś. To że widzisz w terminalu "TRUE /dev/sda1 ...itd. " to nic nie znaczy. Ta lista ma się wygenerować jako parametr zenity i wtedy to ma sens, czyli funkcja main pisana na piechotę dla Twojego jednego przymadku: zenity --title "Formatowanie Dysków" --text "bedzie formacik panie?" \ --width=400 --height=300 \ --list --checklist \ --column="zaznacz" --column "partycja" \ TRUE /dev/sda1 \ TRUE /dev/sda5 \ TRUE /dev/sdb1 \ TRUE /dev/sdc1 \ TRUE /dev/sdc2 \ TRUE /dev/sdc5 \ TRUE /dev/sdd1 \ TRUE /dev/sde1 \ TRUE /dev/sde2 \ TRUE /dev/sde5 \ TRUE /dev/sde6 \ TRUE /dev/sdg1 \ TRUE /dev/sdf1 \ --separator " " --multiple \ --print-column=2; A wiesz dlaczego jedynie wyświetla się mkfs.ext3 /dev/sdf1 zamiast formatować partycję? wpisz w konsoli man echo man mkfs.ext3 itd. do każdego polecenia z tego skryptu. Zamiast męczyć się nad tym skryptem, zleć to komuś albo zacznij czytać: http://wiki.fedora.pl/wiki/Podstawy_Linuksa http://dief.republika.pl/main.html http://www.google.pl/search?q=bash+podstawy http://library.gnome.org/users/zenity/ lub podejdź do tego trochę ambitniej i zmień język np.: http://www.google.pl/search?q=python+dbus Jak widzisz nawet napisanie i edycja prostego skryptu wymaga odrobiny ćwiczeń. Nic nie zrobisz dalej jeśli nie zaczniesz czytać i wykonywać na bieżąco ćwiczeń. Odłóż ten skrypt na bok i się trochę poducz, bo widzę, że w życiu nie napisałeś żadnego programu. Pozdrawiam i jeszcze raz proszę Cię, żebyś najpierw nauczył się języka, w którym chcesz ten skrypt/program wykonać. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
digger123 Napisano Luty 10, 2010 Autor Zgłoszenie Share Napisano Luty 10, 2010 zawsze myslalem ze od tego sa fora aby ludzie mogli sobie jakos pomoc - jak widzisz nie jestem wtym biegly jak ty - jakbym mial z tym doczynienia na codzien to (_napewno_ → na pewno) ORT bym nie zadawal takich pytan tutaj. Niemniej jednak nie uazam tego skrypciku za jakis wyskokowy aby to komus zlecac ( pozatym siedzac na rozynch forach zauwazam ta sama tendencje wszyscy chca na wszystkim zarabiac, zlecac, polecac itd itp). ten skrypt spadl mi na leb jak cegla w drewnianym kosciele i ktos sie uparl ze mam go napisac, i go napisze tak czy siak. P.S. jakbym mial czas sie zaglabiac w setki tutoriali ksiazek itd poto zeby walnac 50 linijek kodu - na bank bym to zrobil ale niestety nie mam za bardzo czasu ( choci zaluje ) i reczej wiecej w zyciu mi sie to nie przyda ( chociaz kto wie ). Z gory i tak dziekuje za wszelaka pomoc jaka tu uzyskalem. P.S. moze ktos zna jakis sofik ktory sformatuje mi ext 3 pod winda - dlubne cus w c++, bo zanim dokopie sie do wszystkigo w fedorze to mi broda urosnie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się