Fórum Ubuntu CZ/SK
Ostatní => Tipy a triky pro Linux => Téma založeno: arrange 24 Ledna 2010, 12:30:25
-
Občas se mi zdá, že při řešení problémů zde na fóru se stráví hodně času mámením dodatečných informací od přispěvatele, které jsou pak často neúplné, přispěvatel příkaz špatně zkopíruje apod. Napadlo mě, že pokud by se podařilo vytvořit skript, který by informace k problému schraňoval automaticky (něco podobného boot_info_scriptu na řešení problémů při bootování nebo systémového apportu), ušetřilo by nám/přispěvatelům to spoustu práce.
Jako vzorek jsem udělal bash skript na analýzu problémů s externími disky apod. Návod jsem se snažil udělat tak, aby se nemusel použít terminál.
Postup by byl asi takový: návod by byl na wiki včetně skriptu (aby ho mohl kdokoli doplnit/upravit).
Skript by se zkopíroval do souboru na plochu.
Pravoklik na skript a vybrat Otevřít jinou aplikací.
(http://img200.imageshack.us/img200/5802/diskdebugpravoklik.th.png) (http://img200.imageshack.us/i/diskdebugpravoklik.png/)
Použít vlastní příkaz a tam dát gksudo bash
(http://img691.imageshack.us/img691/881/openwith.th.png) (http://img691.imageshack.us/i/openwith.png/)
Pak už skript pracuje sám. Výsledek uloží do souboru na plochu - výsledek.txt a ten se zkopíruje zpět do fóra.
Moje dotazy:
1. Myslíte, že by to takto mohlo fungovat, a že by to opravdu ulehčilo práci?
2. Zkuste postup i skript na nějakém svém externím zařízení (flash disk třeba). Funguje jak má?
3. Znáte nějaký elegantnější způsob, jak spustit skript s právy roota bez použití terminálu? Nebo jak mít kód veřejně dostupný/upravovatelný, a přitom si ho může kdokoli lehce stáhnout?
Vzorový skript ("DiskDebug")#! /bin/bash
Devkit(){
for i in /dev/[sh]d[a-z]*; do
devkit-disks --show-info $i
done
}
if [[ `whoami` != "root" ]]; then
zenity --info --title="DiskDebug" --text="Musíš být root!\nSpouštěj skript přes gksudo."
exit 1
fi
# seznam příkazů, u nichž budeme dělat diff
DiskPrikazy=( "dmesg" "lsusb" "fdisk -l" "parted -l" "mount" "blkid -c /dev/null" "Devkit" )
# seznam obecných příkazů, které by mohly naznačit, že problém je někde jinde
SystemPrikazy=( "uname -a" "cat /etc/lsb-release" "free -m" "df -h" )
AktAdresar=$(cd $(dirname $0);pwd)
# vytvoř temp soubory s výpisy příkazů
for i in $(seq 0 $((${#DiskPrikazy[@]} - 1))); do
${DiskPrikazy[$i]} &> /tmp/$i.txt
done
zenity --info --title="DiskDebug" --text="Ujisti se, že je zařízení vysunuté z počítače nebo vypnuté.\nPak znovu připoj zařízení.\nAž bude připojené, klikni OK."
# čekej, než systém disk zaregistruje
( for i in {1..15}; do echo $(($i * 7)); sleep 1; done ) |
zenity --title="DiskDebug" --text="Sbírám data" --progress --percentage=0 --auto-close --auto-kill
# veškerý výstup odteď jde do výsledky.txt
exec &> $AktAdresar/výsledky.txt
# znovu výstup z DiskPrikazy, ale výstupem bude jen rozdíl mezi temp a aktuálním
for i in $(seq 0 $((${#DiskPrikazy[@]} - 1))); do
prikaz=${DiskPrikazy[$i]}
echo
echo $prikaz
echo ---------------------------
$prikaz | diff - /tmp/$i.txt
done
# zaznamenej výstup z obecných příkazů
for i in $(seq 0 $((${#SystemPrikazy[@]} - 1))); do
prikaz=${SystemPrikazy[$i]}
echo
echo $prikaz
echo ---------------------------
$prikaz
done
exit 0
-
dobrý nápad.. mnohé príspevky fakt iba dolujú informácie o probléme
-
A máme tu novou zkratku.
UTFADS!
;D
Ovšem na výslovnosti a vulgárnosti by to chtělo ještě zapracovat.
-
Smysl to samozřejmě má. Já bych to jen uvítal. Skript by se dal stahovat přímo přes wget jako soubor. Otázkou asi trochu je bezpečnost...
-
Perfektní K++;
Přemýšlel jsem nad otázkou zda pro více problémů udělat více scriptů, nebo jeden komplexní.
Rád bych se podílel na vývoji podobných věcí, prolezu to a případně bych si vzal na starosti řešení pro problémy se sítí...
-
BTW: výsledky.txt na ploše jsou vlastníkem roota, otázkou je, jestli to je záměr, nebo by stálo je chownout na uživatele...
-
Díky za reakce :) :)
Smysl to samozřejmě má. Já bych to jen uvítal. Skript by se dal stahovat přímo přes wget jako soubor. Otázkou asi trochu je bezpečnost...
wget jsem pro začátek vyloučil, aby šlo vše udělat BEZ terminálu. Bezpečnost by byla relativně zaručena tím, že kód by byl otevřený na wiki, a kdokoli by ho mohl zkontrolovat/modifikovat.
Přemýšlel jsem nad otázkou zda pro více problémů udělat více scriptů, nebo jeden komplexní.
Rád bych se podílel na vývoji podobných věcí, prolezu to a případně bych si vzal na starosti řešení pro problémy se sítí...
Jestli jeden nebo víc, to nevím. Jen vím, že pokud se podaří udělat ASPOŇ jeden (funkční a praktický), tak to bude malý zázrak.
Taky by mě zajímalo, jestli jsme jako "komunita" schopni něco takového kooperativně vytvořit.
Jinak sítím vůbec nerozumím, takže do toho! Nejpozději o víkendu vytvořím tu wikinu na DiskDebug.
BTW: výsledky.txt na ploše jsou vlastníkem roota, otázkou je, jestli to je záměr, nebo by stálo je chownout na uživatele...
Záměr to nebyl, ale když se teď na to koukám, tak to není špatné, protože manipulovat se s tím souborem dá, vymazat taky, a přitom nejde změnit jeho obsah. Takže asi ideál.
S pozdravem UTFADS, ;D
arrange.
-
Googlim celej den ten problém s právy roota a nic smysluplnýho jsem nenašel...
V ideálním případě by bylo fajn spustit soubor, ktere si o toh heslo požádá.
Ale tak stejně musíš minimálně nastavit spusitelnej příznak, takže to máš klikání jak klikání...
Právě jsem začal psát něco na ty sítě, nejlepčí by bylo prolízt archiv a nejčastější problémy takhle zautomatizovat...
-
Ono není problém udělat .deb balíček, který by to všechno zautomatizoval úplně.
Ale ten by se pak musel odinstalovávat, a hlavně by se přišlo o tu transparentnost a jednoduchost úpravy na wiki.
-
zdar,
taky jsem o tom přemýšlel. Skriptíky jsem už nějaké napsal. Problém je s uložením skriptu a následná jednoduchá instalace na pc.
Možnosti které mě napadli:
WIKI:
+ Supr že vidíš kdo co upravil.
- Pro jednoduchou instalaci jsou skripty nutno zabalit jako přílohu.
- Musíš kontrolovat kód přílohy oproti wiki a zjistit zda v kódu není nějaká bota kterou tam mohl nasadit téměř kdokoliv.
Ubuntu one:
+ Jednoduchost
- Problém s verzováním skriptů
CVS:
+ Asi nejlepší volba
- nikdy jsem nezkoušel, nemám zkušenosti
Jinak není problém udělat jeden archiv a k němu soubor průvodce instalací (skript rozbalí archiv do nějaké složky)
-
Moje verze pro síťové nastavení, vše se defaultně rve na seznam.cz, jinak je možné si nastavit cokoliv jiného (Doména, nebo IP)
Pokud by měl někdo něco co by se dalo ještě o cíly vyšťourat sem s tím.
Omezil jsem se na toto: ifconfig, ip a, iptables, ping, traceroute, dig, nslookup, nmap...
#!/bin/bash
AktAdresar=$(cd $(dirname $0);pwd)
Cil=$(zenity --entry --text "Doména/IP adresa cílového stroje. \n\nPokud si nejste jisti nastavením ponechte seznam.cz" --title="NetDebug" --entry-text "seznam.cz")
Prikazy=("cat /etc/hosts" "ifconfig" "ip a" "iptables -S" "ping ${Cil} -c 10" "traceroute ${Cil}" "dig ${Cil}" "nslookup ${Cil}")
exec &> $AktAdresar/NetDebug.txt
for i in $(seq 0 $((${#Prikazy[@]} - 1))); do
prikaz=${Prikazy[$i]}
echo
echo $prikaz
echo ---------------------------
$prikaz
done
//EDIT 1
Máš v tom skriptu sudo, což je na nic, celé to musí být spouštěné pod rootem.
Díky opraveno, přehlédl jsem to při kopírování z terminálu ::)
//EDIT 2
je nmap v defaultni instalaci? pokud ne, tak bych ho odebral ze skriptu...
Není, asi to beru moc jako samozřejmost ;D Odebráno...
-
Máš v tom skriptu sudo, což je na nic, celé to musí být spouštěné pod rootem.
-
je nmap v defaultni instalaci? pokud ne, tak bych ho odebral ze skriptu...
-
Možná by vám pomohla následující zprávička: http://www.root.cz/zpravicky/intuitivni-generator-prikazu/
Co takhle udělat na wiki stránku, která se jednou denně nahraje na UbuntuOne (lze i pro Win (http://www.root.cz/zpravicky/ubuntu-one-bude-portovane-na-windows/336921/)) a zní se to bude instalovat? Zamezí se tím problémy s verzováním.
-
>snowman
Já bych tam ten nmap nechal (já jsem zase neměl traceroute), ale ošetřil třeba takto:# příkaz se provede jen tehdy, pokud je nainstalován v systému; to || echo tam není nutné
which ${prikaz%%\ *} >/dev/null 2>&1 && $prikaz || echo "... není nainstalován v systému!"
Taky ten ping to tam zdržuje, a pak to vypadá, že se nic neděje ("ten skript nefunguje!"), chtělo by to asi zase hodit do nějakého zenity --progress.
Jo, a neměla by se pro jistotu nějak ošetřit ta zadaná adresa/IP?
>Milhouse
To nevím, jak udělat, pokud nemám administrátorský přístup k wiki, celkově nemám s U1 žádné zkušenosti.
-
Začíná to tu bejt zajímavý, připíchnuto ;)
-
S těmi automatickými skripty je to skvělá myšlenka, samotného by mě i bavilo je třeba psát, ale nemám na to teď moc náladu ani čas(hlavně bych se bash musel pořádně naučit). Jen bych chtěl všechny upozornit, že to má několik háčků:
1. Noví členové tohoto fóra budou mít značný problém se zařadit mezi "rádce" - nebudou prostě výstupu skriptů rozumět a bude pro ně složité se to učit, když nebyli "u zrodu". Na viry.cz/forum je to vlastně podobné, a co si pamatuju, moc nových rádců jsem tam neviděl.
2. Pozor, aby to nedošlo tak daleko (jako třeba na výše zmíněném fóru), že uživatelé nebudou absolutně tušit, co skripty dělají a prostě je jen spustí, výsledek sem hodí, pak si v odpovědi stáhnou jiný skript a ten problém vyřeší. Je to pohádkové, bohužel se nenaučí vůbec nic.
Nepochybuju o vysoké inteligenci zdejších lidí, a věřím, že ty skripty se budou používat hlavně v případech, kdy bude obtížné zjistit, co se v problémovém systému vlastně děje. :)
-
>Firzen
Gratuluju k jistě brzkému překonání první tisícovky!
Jinak ty námitky všechny beru a je to částečně pravda. Částečně proto, že ty skripty za uživatele nedělají nic jiného, než že ukáží výstup z několika příkazů. Jinak nic. Za uživatele nic neudělají ani nevyřeší. Napsat dostatečně obecný skript, který by vše opravil, je podle mě natolik těžké, že se tady o to asi nikdo ani nepokusí :) Jsou to DEBUGovací skripty.
Základní myšlenka je ta, aby se zamezilo vláknům typu (zkráceně):
> Nefunguje mi fleška
>> Dej výstup z dmesg | tail
> [ 10.870006] PGTBL_ER: 0x00000010
[ 10.888369] [drm] DAC-6: set mode 1280x1024 13
[ 10.959535] Console: switching to colour frame buffer device 160x64
[ 11.395238] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 12.120704] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 12.120752] HDA Intel 0000:00:1b.0: setting latency timer to 64
[ 12.367569] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input5
[ 13.816141] e100: eth0 NIC Link is Up 100 Mbps Full Duplex
[ 13.816367] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 23.872024] eth0: no IPv6 routers present
>> Musíš flešku vytáhnout a pak zase zastrčit a pak znovu
> (výsledek je příliš krátký)
>> můžeš dát dmesg | tail -20
> (vypadá to OK)
>> dáš tady výstup z lsusb
atd. ad infinitum (příklad takového vlákna třeba zde (http://forum.ubuntu.cz/index.php?topic=43191.new;topicseen), doufám, že to zúčastnění neberou jako urážku)
Pokud je to vlákno příliš dlouhé, většinou to přestane jednu ze stran velmi rychle bavit a je to nevyřešené.
Na druhou stranu uznávám, že to vypadá, že se málokomu chce číst dlouhé výpisy. (Třeba když někdo pošle výpis z boot_info_script, tak je to často bez odezvy.)
Oproti tomu by debugovací skript dal výstup ze zákl. příkazů hned na začátku, např.
dmesg
---------------------------
669,689d668
< [ 2682.300043] end_request: I/O error, dev fd0, sector 0
< [ 2682.328027] end_request: I/O error, dev fd0, sector 0
< [ 2690.316035] usb 1-4: new high speed USB device using ehci_hcd and address 3
< [ 2690.451331] usb 1-4: configuration #1 chosen from 1 choice
< [ 2690.505460] Initializing USB Mass Storage driver...
< [ 2690.505622] scsi4 : SCSI emulation for USB Mass Storage devices
< [ 2690.505925] usbcore: registered new interface driver usb-storage
< [ 2690.505931] USB Mass Storage support registered.
< [ 2690.506919] usb-storage: device found at 3
< [ 2690.506924] usb-storage: waiting for device to settle before scanning
< [ 2695.504188] usb-storage: device scan complete
< [ 2695.505299] scsi 4:0:0:0: Direct-Access Generic USB Flash Disk 0.00 PQ: 0 ANSI: 2
< [ 2695.505888] sd 4:0:0:0: Attached scsi generic sg3 type 0
< [ 2695.522417] sd 4:0:0:0: [sdc] 1974271 512-byte logical blocks: (1.01 GB/963 MiB)
< [ 2695.523390] sd 4:0:0:0: [sdc] Write Protect is off
< [ 2695.523394] sd 4:0:0:0: [sdc] Mode Sense: 00 00 00 00
< [ 2695.523397] sd 4:0:0:0: [sdc] Assuming drive cache: write through
< [ 2695.528271] sd 4:0:0:0: [sdc] Assuming drive cache: write through
< [ 2695.528280] sdc: sdc1
< [ 2695.696238] sd 4:0:0:0: [sdc] Assuming drive cache: write through
< [ 2695.696248] sd 4:0:0:0: [sdc] Attached SCSI removable disk
lsusb
---------------------------
2d1
< Bus 001 Device 003: ID 3538:0054 Power Quotient International Co., Ltd Flash Drive (2GB)
fdisk -l
---------------------------
29,38d28
<
< Disk /dev/sdc: 1010 MB, 1010826752 bytes
< 255 heads, 63 sectors/track, 122 cylinders
< Units = cylinders of 16065 * 512 = 8225280 bytes
< Disk identifier: 0x91f72d24
<
< Device Boot Start End Blocks Id System
< /dev/sdc1 1 123 987104 b W95 FAT32
< Partition 1 has different physical/logical endings:
< phys=(121, 254, 63) logical=(122, 227, 40)
parted -l
---------------------------
29,37d28
< Model: Generic USB Flash Disk (scsi)
< Disk /dev/sdc: 1011MB
< Sector size (logical/physical): 512B/512B
< Partition Table: msdos
<
< Number Start End Size Type File system Flags
< 1 32.3kB 1011MB 1011MB primary fat32
<
<
mount
---------------------------
15d14
< /dev/sdc1 on /media/8C3A-3BB0 type vfat (rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
blkid -c /dev/null
---------------------------
11d10
< /dev/sdc1: LABEL="" UUID="8C3A-3BB0" TYPE="vfat"
uname -a
---------------------------
Linux lean 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 16:20:31 UTC 2009 i686 GNU/Linux
cat /etc/lsb-release
---------------------------
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.10
DISTRIB_CODENAME=karmic
DISTRIB_DESCRIPTION="Ubuntu 9.10"
free -m
---------------------------
total used free shared buffers cached
Mem: 993 637 356 0 39 325
-/+ buffers/cache: 272 720
Swap: 1051 0 1051
df -h
---------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 15G 3.7G 10G 28% /
udev 497M 288K 497M 1% /dev
none 497M 140K 497M 1% /dev/shm
none 497M 72K 497M 1% /var/run
none 497M 8.0K 497M 1% /var/lock
none 497M 0 497M 0% /lib/init/rw
/dev/sdb1 78G 38G 37G 51% /home
/dev/sdc1 963M 44M 919M 5% /media/8C3A-3BB0
-
2 arrange, naprosto stejný názor...
Otupěním začátečníků bych se nebál je to prostě jen flush výstupů...
A opravdu si myslim, že to může pomoct a zrychlí se celý proces u většiny problémů (minimálně u těch na které se dá tento postup aplikovat)
Razim na víkend na hory, pak na to vlítnu a poladim to :)
BTW: pokud by nebylo potřeba u toho tvého scriptu dělat ten rozdíl výpisů, dal by se krásně udělat jeden univerzální soubor na periferie i sítě...
-
firzen: Uzivatel se nic nenauci, ale potrebuje se ucit? On chce mit problem vyreseny a ve vetsine pripadu je rad ze mu to beha a dal se v tom nestoura. Mozna je to lepsi, ze se nemusi ucit nic noveho ;) Ale s temi radci bude problem, bud bych tam dal komenty (ktere zbytecne bobtnaji kod) a nebo bych zalozil paralelni vlakno "Jak radit" - nechavam na vas ;)
-
firzen: Uzivatel se nic nenauci, ale potrebuje se ucit? On chce mit problem vyreseny a ve vetsine pripadu je rad ze mu to beha a dal se v tom nestoura. Mozna je to lepsi, ze se nemusi ucit nic noveho ;) Ale s temi radci bude problem, bud bych tam dal komenty (ktere zbytecne bobtnaji kod) a nebo bych zalozil paralelni vlakno "Jak radit" - nechavam na vas ;)
Souhlasím, obyčejnému uživateli je opravdu jedno, co přesně skript dělá, hlavně, když to spraví... A pro šťouraly :-) by se mohla napsat stránka na wiki, kde by byl skript popsanej, nepřijde mi nutný to strkat přímo do skriptu, pokud to nebude anglicky, což asi nebude :-)
-
Vytvořil jsem základ wiki stránek, kdo má zájem, prosím o úpravu - námitky - návrhy.
http://wiki.ubuntu.cz/%C5%98e%C5%A1en%C3%AD%20probl%C3%A9m%C5%AF/Jak%20dodat%20informace%20do%20f%C3%B3ra
http://wiki.ubuntu.cz/DiskDebug
-
Vytvořil jsem základ wiki stránek, kdo má zájem, prosím o úpravu - námitky - návrhy.
jako začátečníkovi mi nebude jasné jak to mám uložit, jako te.txt nebo ba.sh nebo foo.php :)
Radši ať mě to vede krok za krokem...
-
čaute, tiež si myslím, že je to super nápad, vidno, že na nás myslíte, samozrejme v mene všetkých začiatočníkov si dovolím poďakovať Vám...skúšal som ten skript a kým som dostal na obrazovku odozvu od DEBUG o odpojení a znovupripojení zariadenia, stihol som to vzdať, prihlásiť sa k tomuto vláknu a ešte aj napísať poďakovanie :)
Ale dívam sa a výstupný súbor je predsa len na ploche, tak to funguje aj u mňa, iba som chytil splín, lebo to akože nič už nerobilo...nedalo by sa to ošetriť nejakou hláškou, napr.: vytvorenie výstupného súboru može chvílku trvať
on ten kompik ma vážne presvedčil, že nič nevytvorí ;D
Ale ako som písal, je to super, ešte raz vďaka
A na skúšku Vám možem poslať ten výstup, mam tu pripojeny Sony Ericsson 750i a nevidno ho na ploche, nemožem ho nájsť, síce ma to nejak moc netrápi, ale ako exemplár by to mohlo stačiť...to ale asi už nie je do tohoto vlákna :)
-
Počkej, to je divné. Správně by to po spuštění mělo víceméně okamžitě ukázat okno s nápisem Ujisti se, že je zařízení vysunuté z počítače nebo vypnuté.... atd. Po kliknutí na OK by se mělo ukázat okno na 15 sekund (Sbírám data...) a pak se skript ukončí. Na ploše je výsledek.txt.
V čem to bylo u tebe jinak?
-
Počkej, to je divné. Správně by to po spuštění mělo víceméně okamžitě ukázat okno s nápisem Ujisti se, že je zařízení vysunuté z počítače nebo vypnuté.... atd. Po kliknutí na OK by se mělo ukázat okno na 15 sekund (Sbírám data...) a pak se skript ukončí. Na ploše je výsledek.txt.
V čem to bylo u tebe jinak?
no. chvilku bezalo to kolečko miesto šipky akože to niečo robí a potom sa zmenilo na šipku a počítač sa tváril, že už má hotovo a nemieni sa tým už zaoberať, až po tom dost dlhom čase ako som písal sa mi objavila hláška o odpojeni a pripojení, potom to zhromažďovanie dát a nakoniec vytvorenie textoveho suboru na ploche
-
Mohla to být náhoda, ale je to spíš chyba programu :) Zkusíš to ještě jednou, jestli to udělá to samé?
Pokud ano, zkopíroval bys níže uvedený skript do souboru test.sh, třeba v tvé domovské složce, a pak otevřel Terminál (http://wiki.ubuntu.cz/Termin%C3%A1l), a v něm ten skript spustil pomocísudo bash ~/test.sh
Sleduj, kde se ti to zastaví/zpomalí, a zkopíruj to sem.
Skript#! /bin/bash
set -x
Devkit(){
for i in /dev/[sh]d[a-z]*; do
devkit-disks --show-info $i
done
}
if [[ `whoami` != "root" ]]; then
zenity --info --title="DiskDebug" --text="Musíš být root!\nSpouštěj skript přes gksudo."
exit 1
fi
DiskPrikazy=( "dmesg" "lsusb" "fdisk -l" "parted -l" "mount" "blkid -c /dev/null" "Devkit" )
SystemPrikazy=( "uname -a" "cat /etc/lsb-release" "free -m" "df -h" )
AktAdresar=$(cd $(dirname $0);pwd)
for i in $(seq 0 $((${#DiskPrikazy[@]} - 1))); do
${DiskPrikazy[$i]} &> /tmp/$i.txt
done
exit 0
-
ono to bylo tim, ze stefik to nespoustel v terminalu, ale poklikanim na soubor... proto ta prodleva
-
Mohla to být náhoda, ale je to spíš chyba programu :) Zkusíš to ještě jednou, jestli to udělá to samé?
Pokud ano, zkopíroval bys níže uvedený skript do souboru test.sh, třeba v tvé domovské složce, a pak otevřel Terminál (http://wiki.ubuntu.cz/Termin%C3%A1l), a v něm ten skript spustil pomocísudo bash ~/test.sh
Sleduj, kde se ti to zastaví/zpomalí, a zkopíruj to sem.
Skript#! /bin/bash
set -x
Devkit(){
for i in /dev/[sh]d[a-z]*; do
devkit-disks --show-info $i
done
}
if [[ `whoami` != "root" ]]; then
zenity --info --title="DiskDebug" --text="Musíš být root!\nSpouštěj skript přes gksudo."
exit 1
fi
DiskPrikazy=( "dmesg" "lsusb" "fdisk -l" "parted -l" "mount" "blkid -c /dev/null" "Devkit" )
SystemPrikazy=( "uname -a" "cat /etc/lsb-release" "free -m" "df -h" )
AktAdresar=$(cd $(dirname $0);pwd)
for i in $(seq 0 $((${#DiskPrikazy[@]} - 1))); do
${DiskPrikazy[$i]} &> /tmp/$i.txt
done
exit 0
prepáč, ale už to asi nevyzkúšam, občas sa mi stane, že mi pri zavádzaní systému naskočí minimal bash line like supported, z čím si neviem nikdy rady a preinštalovávam ubuntu. Tak sa ospravedlňujem, na tejto inštalácii to už asi neotestujem...ale v prípade, že by mi to robila aj nová inštalácia, tak sa ozvem
-
pozriem sa niekde po obnove grubu, alebo ma možete navigovať, inštaloval som to z windows, vždy mi to pár dní ide. Keď to dám do provozuschopného stavu, tak to testnem ;)
-
došlo mi to až sem, potom sa to zastavilo:
stefik@kompik:~$ sudo bash ~/test.sh
[sudo] password for stefik:
++ whoami
+ [[ root != \r\o\o\t ]]
+ DiskPrikazy=("dmesg" "lsusb" "fdisk -l" "parted -l" "mount" "blkid -c /dev/null" "Devkit")
+ SystemPrikazy=("uname -a" "cat /etc/lsb-release" "free -m" "df -h")
+++ dirname /home/stefik/test.sh
++ cd /home/stefik
++ pwd
+ AktAdresar=/home/stefik
++ seq 0 6
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ dmesg
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ lsusb
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ fdisk -l
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ parted -l
skúšal som to teda na novej inštalácii ::)
dokladám zbytok, ten prebehol asi po dvoch minutach:
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ mount
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ blkid -c /dev/null
+ for i in '$(seq 0 $((${#DiskPrikazy[@]} - 1)))'
+ Devkit
+ exit 0
stefik@kompik:~$
-
Hele, já jen tak, ale neměla by být ta return hodnota spíš 1?
(Vycházím z toho že v bashi je to "command1 && command2" - spustit command1 jen když vyhodí true (dokončí se správně))
-
Chapu do dobre ze se ti to zastavilo na parted -l? Zkusis tedy v Terminalu samostatne
sudo parted -l
jestli ti to taky bude dele trvat, a co to vypise?
-
Správně, na parted-l.Po chvilke(asi tak do 10s) to vyplivlo tohle:
Model: ATA WDC WD6400AAKS-0 (scsi)
Disk /dev/sda: 640GB
Veľkosť sektora (logická/fyzická): 512B/512B
Tabuľka oddielov: msdos
Číslo Začiatok Koniec Veľkosť Typ Súborový systém Prepínače
1 32,3kB 635GB 635GB primary ext4 zavádzací
2 635GB 640GB 5404MB extended
5 635GB 640GB 5404MB logical linux-swap(v1)
Upozornenie: Nemôžem otvoriť /dev/sr0 na čítanie/zápis (Read-only file system).
/dev/sr0 bol otvorený len na čítanie.
Chyba: /dev/sr0: nerozpoznaná menovka disku.
a pak po další chvilce tohle:Upozornenie: Nemôžem otvoriť /dev/fd0 na čítanie/zápis (Read-only file system).
/dev/fd0 bol otvorený len na čítanie.
pak dlouho nic a pak tohle:Chyba: /dev/fd0: nerozpoznaná menovka disku.
celkový čas něco kolem 4 minut
-
Zkoušel někdo nějaký jiný skripty, třeba na síť? :D
-
Mal som teraz trochu casu a tak som to tu preskusal. Ano funguju tie udelatka. A je fajn ze je to pokope. Dakujem. :)
-
Tak pridam moji , malinko podrobnejsi verzi.
Potrebny baliky: procinfo
sudo apt-get install procinfo
a zde je samotnej script:
#!/bin/bash
if [[ `whoami` != "root" ]]; then
zenity --info --title="DiskDebug" --text="Musíš být root!\nSpouštěj skript přes gksudo."
exit 1
fi
echo "*****[CPU INFORMATION]*****" > muj-system-info.txt
procinfo >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
cat /proc/cpuinfo >> muj-system-info.txt
echo " " >> muj-system-info.txt
echo "*****[NETWORK INFORMATION]*****" >> muj-system-info.txt
ifconfig >> muj-system-info.txt
echo " " >> muj-system-info.txt
echo "*****[DISK & PARTITION]*****" >> muj-system-info.txt
fdisk -l >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
parted -l >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
mount >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
blkid -c /dev/null >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
df -h >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
dmesg >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
lsusb >> muj-system-info.txt
echo " " >> muj-system-info.txt
echo "*****[MEMORY INFORMATION]*****" >> muj-system-info.txt
cat /proc/meminfo >> muj-system-info.txt
echo " " >> muj-system-info.txt
echo " ******* [SYSTEM] ****** " >> muj-system-info.txt
uname -a >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
lsmod >> muj-system-info.txt
echo "---------------------------------------------------------------------------------------------" >> muj-system-info.txt
cat /etc/lsb-release >> muj-system-info.txt
echo " " >> muj-system-info.txt
echo " ******* [GCC] ***** " >> muj-system-info.txt
gcc -v 1>>muj-system-info.txt 2>>muj-system-info.txt
echo " " >> muj-system-info.txt
echo " ******* [PCI] ****** " >> muj-system-info.txt
lspci >> muj-system-info.txt
echo " " >> muj-system-info.txt
-
<prikaz>cat /etc/hosts</prikaz>
<vypis>
192.168.1.100 ctirad-Extensa-5235 # Added by NetworkManager
127.0.0.1 localhost.localdomain localhost
::1 ctirad-Extensa-5235 localhost6.localdomain6 localhost6
127.0.1.1 ctirad-Extensa-5235
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
</vypis>
<prikaz>ifconfig</prikaz>
<vypis>
eth0 Link encap:Ethernet HWadr c8:0a:a9:c5:ef:dc
inet adr:192.168.1.100 Všesměr:192.168.1.255 Maska:255.255.255.0
inet6-adr: fe80::ca0a:a9ff:fec5:efdc/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1
RX packets:159 errors:0 dropped:0 overruns:0 frame:0
TX packets:212 errors:0 dropped:0 overruns:0 carrier:1
kolizí:0 délka odchozí fronty:1000
Přijato bajtů: 69609 (69.6 KB) Odesláno bajtů: 36811 (36.8 KB)
Přerušení:46
lo Link encap:Místní smyčka
inet adr:127.0.0.1 Maska:255.0.0.0
inet6-adr: ::1/128 Rozsah:Počítač
AKTIVOVÁNO SMYČKA BĚŽÍ MTU:16436 Metrika:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:0
Přijato bajtů: 1152 (1.1 KB) Odesláno bajtů: 1152 (1.1 KB)
</vypis>
<prikaz>ip a</prikaz>
<vypis>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c8:0a:a9:c5:ef:dc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet6 fe80::ca0a:a9ff:fec5:efdc/64 scope link
valid_lft forever preferred_lft forever
</vypis>
<prikaz>iptables -S</prikaz>
<vypis>
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
</vypis>
<prikaz>ping seznam.cz -c 10</prikaz>
<vypis>
PING seznam.cz (77.75.76.3) 56(84) bytes of data.
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=1 ttl=249 time=15.6 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=2 ttl=249 time=19.9 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=3 ttl=249 time=33.4 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=4 ttl=249 time=13.8 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=5 ttl=249 time=22.6 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=6 ttl=249 time=27.4 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=7 ttl=249 time=13.6 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=8 ttl=249 time=14.8 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=9 ttl=249 time=93.3 ms
64 bytes from www.seznam.cz (77.75.76.3): icmp_req=10 ttl=249 time=29.9 ms
--- seznam.cz ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 13053ms
rtt min/avg/max/mdev = 13.622/28.487/93.384/22.655 ms
</vypis>
<prikaz>traceroute seznam.cz</prikaz>
<vypis>
traceroute to seznam.cz (77.75.76.3), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.409 ms 0.774 ms 0.761 ms
2 w0-skalni.bb.mitranet.net (192.168.78.1) 7.014 ms 8.323 ms 19.350 ms
3 v11-str1213a.bb.mitranet.net (172.16.3.1) 31.773 ms 34.092 ms 37.036 ms
4 rev57.mitranet.cz (62.240.190.57) 38.328 ms 42.630 ms 44.142 ms
5 gi0-1-s145.bb1.pop1.olo.sloane.cz (62.240.163.5) 45.069 ms 49.514 ms 51.195 ms
6 v104.tr2.pop1.pra.sloane.cz (62.240.161.201) 54.761 ms 46.696 ms 25.893 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
</vypis>
<prikaz>dig seznam.cz</prikaz>
<vypis>
; <<>> DiG 9.7.1-P2 <<>> seznam.cz
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48596
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;seznam.cz. IN A
;; ANSWER SECTION:
seznam.cz. 68 IN A 77.75.76.3
;; AUTHORITY SECTION:
seznam.cz. 17468 IN NS ms.seznam.cz.
seznam.cz. 17468 IN NS ns.seznam.cz.
;; ADDITIONAL SECTION:
ms.seznam.cz. 100 IN A 77.75.77.77
ns.seznam.cz. 171 IN A 77.75.73.77
;; Query time: 17 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Dec 20 15:46:37 2010
;; MSG SIZE rcvd: 109
</vypis>
<prikaz>nslookup seznam.cz</prikaz>
<vypis>
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: seznam.cz
Address: 77.75.76.3
</vypis>