Fórum Ubuntu CZ/SK

Ostatní => Tipy a triky pro Linux => Téma založeno: arrange 24 Ledna 2010, 12:30:25

Název: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: 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")
Kód: [Vybrat]
#! /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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: romciiik 24 Ledna 2010, 12:56:25
dobrý nápad.. mnohé príspevky fakt iba dolujú informácie o probléme
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Roman Vacho 27 Ledna 2010, 11:32:45
A máme tu novou zkratku.
UTFADS!
 ;D

Ovšem na výslovnosti a vulgárnosti by to chtělo ještě zapracovat.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Milhouse 27 Ledna 2010, 13:13:43
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...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 27 Ledna 2010, 13:19:20
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í...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 27 Ledna 2010, 13:23:34
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...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 27 Ledna 2010, 21:33:22
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.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 27 Ledna 2010, 22:16:20
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...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 27 Ledna 2010, 22:31:15
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.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: DuckD 27 Ledna 2010, 22:50:23
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)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 27 Ledna 2010, 23:43:24
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...

Kód: [Vybrat]
#!/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...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: GdH 27 Ledna 2010, 23:55:57

Máš v tom skriptu sudo, což je na nic, celé to musí být spouštěné pod rootem.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: ufaak 28 Ledna 2010, 08:40:05
je nmap v defaultni instalaci? pokud ne, tak bych ho odebral ze skriptu...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Milhouse 28 Ledna 2010, 11:41:43
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.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 28 Ledna 2010, 13:26:52
>snowman
Já bych tam ten nmap nechal (já jsem zase neměl traceroute), ale ošetřil třeba takto:
Kód: [Vybrat]
# 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.
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: LuciusMare 28 Ledna 2010, 16:00:44
Začíná to tu bejt zajímavý, připíchnuto ;)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Firzen 28 Ledna 2010, 18:02:20
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. :)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 28 Ledna 2010, 18:54:18
>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ř.
Kód: [Vybrat]
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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 28 Ledna 2010, 19:09:47
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ě...

Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: LuciusMare 29 Ledna 2010, 20:42:12
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 ;)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Janik 29 Ledna 2010, 23:51:28
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 :-)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 30 Ledna 2010, 22:15:25
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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Tomáš Břinčil 30 Ledna 2010, 22:21:19
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...
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 31 Ledna 2010, 18:32:45
č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 :)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 31 Ledna 2010, 18:38:37
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?
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 31 Ledna 2010, 19:01:01
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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 31 Ledna 2010, 19:28:52
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í
Kód: [Vybrat]
sudo bash ~/test.sh
Sleduj, kde se ti to zastaví/zpomalí, a zkopíruj to sem.

Skript
Kód: [Vybrat]
#! /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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: ufaak 31 Ledna 2010, 20:53:14
ono to bylo tim, ze stefik to nespoustel v terminalu, ale poklikanim na soubor... proto ta prodleva
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 07 Února 2010, 17:54:05
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í
Kód: [Vybrat]
sudo bash ~/test.sh
Sleduj, kde se ti to zastaví/zpomalí, a zkopíruj to sem.

Skript
Kód: [Vybrat]
#! /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
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 07 Února 2010, 17:59:01
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  ;)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 07 Února 2010, 19:48:39
došlo mi to až sem, potom sa to zastavilo:
Kód: [Vybrat]
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:

Kód: [Vybrat]
+ 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:~$
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: LuciusMare 07 Února 2010, 20:03:42
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ě))
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: arrange 07 Února 2010, 20:24:06
Chapu do dobre ze se ti to zastavilo na parted -l? Zkusis tedy v Terminalu samostatne
Kód: [Vybrat]
sudo parted -ljestli ti to taky bude dele trvat, a co to vypise?
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: stefik 10 Února 2010, 11:03:56
Správně, na parted-l.Po chvilke(asi tak do 10s) to vyplivlo tohle:
Kód: [Vybrat]
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:
Kód: [Vybrat]
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:
Kód: [Vybrat]
Chyba: /dev/fd0: nerozpoznaná menovka disku.celkový čas něco kolem 4 minut
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: LuciusMare 05 Dubna 2010, 22:56:19
Zkoušel někdo nějaký jiný skripty, třeba na síť? :D
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: Bum 01 Srpna 2010, 12:58:35
Mal som teraz trochu casu a tak som to tu preskusal. Ano funguju tie udelatka. A je fajn ze je to pokope. Dakujem. :)
Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: petrakis 07 Srpna 2010, 17:00:52
Tak pridam moji , malinko podrobnejsi verzi.

Potrebny baliky: procinfo

Kód: [Vybrat]
sudo apt-get install procinfo
a zde je samotnej script:
Kód: [Vybrat]
#!/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

Název: Re: Co takhle nechat uživatele spouštět (polo)automatické debugovací skripty?
Přispěvatel: fidoisdido 20 Prosince 2010, 15:47:34
<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>