Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: ratom 19 Ledna 2011, 09:27:10

Název: Skript hexdump - ulozeni do souboru [vyřešeno]
Přispěvatel: ratom 19 Ledna 2011, 09:27:10
Zdar,
chtěl bych si vytvořit skript pro spuštění příkazu hexdump a záznam výpisu po nějakém čase do souboru. Při spuštění skriptu bych nechtěl, aby se mi otevřel terminál, textový editor, kam bych ukládal.

principiálně by to bylo asi takto:

sudo gedit /home/user/hexdump/vypis"datum".txt

hexdump /dev/input/event5

loop (  kopírování výpisu hexdump
          uložení výpisu do /home/user/hexdump/vypis"datum".txt
          čekání třeba pět minut
              )

Nevím, co by bylo nejjednodušší, jestli skript nebo něco jiného.

Dík za tipy.


Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: pacholik 19 Ledna 2011, 18:09:31
Kód: [Vybrat]
#!/bin/sh

while sleep 300; do hexdump /dev/input/event5 >> /home/user/hexdump/vypis`date +%F`.txt; done
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: ratom 20 Ledna 2011, 08:16:42
Dík. Vypadá to jednoduše. Vyzkouším.
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: ratom 20 Ledna 2011, 20:27:29
Nedaří se mi donutit hexdump ukládat do souboru. Nevím, jak hexdump ukončit. Ukončuji jen za pomoci Ctrl + c. Příkaz hexdump se sám neukončuje, ne pro dev/input/event.

Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: pacholik 20 Ledna 2011, 21:11:44
Aha sry, až teď sem teda zkusil co ten hexdump dělá ::)

Takže bys chtěl aby to 5 min ukládalo do jednoho souboru, pak 5 min do druhýho atd. ? To by šlo nějak takle:
Kód: [Vybrat]
#!/bin/sh

while :; do
hexdump /dev/input/event5 >> /home/user/hexdump/vypis`date +%F\ %R`.txt &
sleep 300
kill -INT $!
done
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: ratom 21 Ledna 2011, 19:16:55
Ty cykly s while, sleep bych si úzpůsobil dle svého, bez problému fungují. Jen mám problém s tím vlastním příkazem hexdump, neukládá do souboru, pomocí >>.
Z nápovědy k hexdump jsem zatím způsob, jak ukládat do souboru nevyčet. Zkoušel jsem pár pokusů a nic.
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: GdH 21 Ledna 2011, 19:26:24
Ty cykly s while, sleep bych si úzpůsobil dle svého, bez problému fungují. Jen mám problém s tím vlastním příkazem hexdump, neukládá do souboru, pomocí >>.
Z nápovědy k hexdump jsem zatím způsob, jak ukládat do souboru nevyčet. Zkoušel jsem pár pokusů a nic.

Řekl bych, že něco děláš špatně, hexdump posílá data normálně na stdout a přesměrování do souboru funguje.

Co třeba ta cesta: /home/user/..., lepší nahradit $HOME, nebo ~.
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: pacholik 21 Ledna 2011, 19:46:13
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: daysleeper 21 Ledna 2011, 19:49:10
mne to taky nefunguje, napr. pro
Kód: [Vybrat]
hexdump /dev/input/mouse1 >> /tmp/logpricemz klasicky na konzoli ano

da se to ale obejit pomoci
Kód: [Vybrat]
dd if=/dev/input/mouse1 of=/tmp/log bs=1a prikaz hexdump se pak pouzije na zobrazeni binarniho souboru /tmp/log
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: GdH 21 Ledna 2011, 20:07:51
Zajímavé... Já totiž při zkoušení použil ../by-id/zařízení, neb se lépe hledá..

Kód: [Vybrat]
hexdump /dev/input/by-id/usb-Genius_Optical_Mouse-event-mouse >> soubor
což funguje, zatímco přímo to fakt nefunguje ani mně.



radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)

Mimochodem toto bylo způsobené tím, že první příspěvek jsem dnes znovu nečetl a paměť je slabá, jinak by mi bylo jasněji.
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: daysleeper 21 Ledna 2011, 20:35:04
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
jaky je v tomto pripade rozdil mezi $HOME a ~?
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: GdH 21 Ledna 2011, 20:49:54
radši ne, $HOME by možná ještě šel, ale ~ určitě ne, bude to spouštět pod rootem (že ?)
jaky je v tomto pripade rozdil mezi $HOME a ~?

Pravděpodobně žádný :)

Zajímavější jsou rozdíly ve výstupu /dev/input a /dev/input/by-id, protože jsem nedávno zprovozňoval tablet a měl jsem problém v tom, že nešlo použít /by-id/, musel jsem to píchnout přímo, což je opruz když potřebujete přepojit konektory. Myslel jsem, že je to jen link a to jsem netušil, že bude rozdíl i pro výstup z hexdump, tentokrát opačný..
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: pacholik 21 Ledna 2011, 21:02:45
rozdíl tam je, $HOME je proměnná ~ je kdovíco
Kód: [Vybrat]
pacholik@hp:~$ sudo sh -c "echo ~"
/root
pacholik@hp:~$ sudo sh -c "echo $HOME"
/home/pacholik
s jednoduchýma uvozovkama už tam rozdíl není a ve skriptu taky ne (takže mea culpa)
Název: Re: Skript hexdump - ulozeni do souboru
Přispěvatel: daysleeper 21 Ledna 2011, 21:22:12
@~ vs $HOME

man bash
Kód: [Vybrat]
If a word begins with an unquoted tilde character (`~'), all of the characters preceding the first unquoted slash (or all characters, if  there  is
       no  unquoted  slash)  are  considered a tilde-prefix.  If none of the characters in the tilde-prefix are quoted, the characters in the tilde-prefix
       following the tilde are treated as a possible login name.  If this login name is the null string, the tilde is replaced with the value of the shell
       parameter  HOME.   If  HOME  is  unset,  the home directory of the user executing the shell is substituted instead.  Otherwise, the tilde-prefix is
       replaced with the home directory associated with the specified login name.