abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | Humor

    Na novoroční inauguraci starosty New Yorku Zohrana Mamdaniho bylo zakázáno si s sebou přinést Raspberry Pi anebo Flipper Zero. Raspberry Pi i Flipper Zero jsou explicitně uvedeny v seznamu zakázaných věcí jak na na veřejné pozvánce, tak i na oficiálních stránkách města.

    NUKE GAZA! 🎆 | Komentářů: 4
    dnes 11:33 | Nová verze

    OpenTTD (Wikipedie), tj. open source klon počítačové hry Transport Tycoon Deluxe, byl vydán v nové stabilní verzi 15.0. Přehled novinek v seznamu změn a také na YouTube. OpenTTD lze instalovat také ze Steamu.

    Ladislav Hagara | Komentářů: 0
    dnes 11:11 | Nová verze

    Správce oken IceWM byl vydán ve verzi 4.0.0, která např. vylepšuje navigaci v přepínání velkého množství otevřených oken.

    |🇵🇸 | Komentářů: 0
    dnes 01:33 | Zajímavý projekt

    Od 1. ledna 2026 jsou všechny publikace ACM (Association for Computing Machinery) a související materiály přístupné v její digitální knihovně. V rámci této změny je nyní digitální knihovna ACM nabízena ve dvou verzích: v základní verzi zdarma, která poskytuje otevřený přístup ke všem publikovaným výzkumům ACM, a v prémiové zpoplatněné verzi, která nabízí další služby a nástroje 'určené pro hlubší analýzu, objevování a organizační využití'.

    NUKE GAZA! 🎆 | Komentářů: 4
    včera 16:44 | IT novinky

    S koncem roku 2025 skončila standardní podpora operačního systému HP-UX (Hewlett Packard Unix).

    Ladislav Hagara | Komentářů: 10
    včera 14:33 | Nová verze

    K 1. lednu 2026 končí 70leté omezení majetkových autorských práv děl autorů zesnulých v roce 1955, viz 2026 in public domain. V americkém prostředí vstupují do public domain díla z roku 1930, viz Public Domain Day.

    |🇵🇸 | Komentářů: 1
    31.12. 15:00 | Nová verze

    Všem vše nejlepší do nového roku 2026.

    Ladislav Hagara | Komentářů: 12
    31.12. 13:33 | Zajímavý software

    Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.

    Ladislav Hagara | Komentářů: 0
    31.12. 12:11 | Zajímavý článek

    Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().

    Ladislav Hagara | Komentářů: 6
    31.12. 03:00 | Nová verze

    Byla vydána nová verze 25.12.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (0%)
     (3%)
     (0%)
     (20%)
     (37%)
     (17%)
     (6%)
     (6%)
     (11%)
     (17%)
    Celkem 35 hlasů
     Komentářů: 1, poslední dnes 06:15
    Rozcestník

    Dotaz: Skript spustí jen něco

    8.10.2017 12:56 Luky
    Skript spustí jen něco
    Přečteno: 779×
    Ahoj, chtěl bych se zeptat, proč v sh skriptu mohu spouštět příkazy jako např. mount a touch, ale cryptsetup ne? Jaký je v tom rozdíl?

    Řešení dotazu:


    Odpovědi

    8.10.2017 13:13 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Možná proto, že Bash obsahuje správně nastavenou cestu v PATH, ale sh ji nastavenou nemá.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 13:24 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    No nevím, když pustím sh skript, ve kterém mám cryptsetup ručně, spustí se...
    8.10.2017 13:37 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Co takhle zkusit spustit cryptsetup ručně v sh?

    Také by se hodilo spouštět takové příkazy s absolutní cestou.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 13:47 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    spustit ručně v sh funguje
    8.10.2017 13:28 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    # which cryptsetup
    /usr/sbin/cryptsetup
    
    # which touch
    /bin/touch
    
    # which mount
    /usr/bin/mount
    
    # echo $PATH
    /usr/sbin:/usr/bin:/sbin:/bin
    
    k3dAR avatar 8.10.2017 16:01 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    kdyz to takto pustis v shellu, tak to neznamena ze z pozice kde poustis script (predpokladam udev pravidlo) to bude stejne...
    obecne kdyz resis ze neco se nepousti tak proste do scriptu pridej tyhle tve prikazy s presmerovanim do souboru, nech to pustit tim co se to vola a zkoukni vystupni soubory... pripadne nesrovnalosti v porovnani s vystupem prikazu v shellu te uz navedou ;)
    porad nemam telo, ale uz mam hlavu... nobody
    8.10.2017 13:47 petr
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    co pouzivas za shell ve svem skriptu? Na zacatku budes mit treba #!/bin/bash nebo neco jineho... Pokud ti to ve skriptu nefunguje, zkus si spustit treba ten /bin/bash a spustit to co potrebujes rucne v nem... jak jiz ti nekdo napovida, patrne nemas validni PATH... Dalsi vec ze bez nejakeho chyboveho hlaseni ti tezko nekdo pomuze kdyz nevime co se deje ve tvem skriptu, tudiz mam tady na stole takovou tu kristalovku a vestim odrazem z oblohy...
    8.10.2017 13:56 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    #!/bin/sh
    
    # Copyright (C) 2009 OpenWrt.org
    PRODID="1058/10b8/1012"
    
    case "$ACTION" in
        add)
            
            if [ "${PRODUCT}" = "${PRODID}" ];
             then
                 /usr/sbin/cryptsetup --key-file /etc/ssl/usbbackup_key luksOpen /dev/sdb1 backup
            fi
            ;;
    
        remove)
    
             if [ "${PRODUCT}" = "${PRODID}" ];      
              then            
                 umount /mnt/usbbackup
             fi           
    
            ;;
    esac
    Ruční spouštění cryptsetup v sh funguje.
    8.10.2017 14:29 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    if [ "${PRODUCT}" = "${PRODID}" ];
    Tato podmínka zřejmě nikdy není splněna.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 14:36 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Je, protože když vyměním příkaz cryptsetup... za touch /tmp/test a rm /tmp/test, soubor se po připojení USB disku vytvoří a po odpojení odstraní
    8.10.2017 16:08 NN
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    po připojení USB disku
    Kdy? Po bootu? Skript se pousti pres udev? Co znamena "nespusti se", nevytvri se mapper zarizeni? K cemu je tam ten umount?

    Mimochodem uz si se jednou ptal, priste laskave nezakladej dalsi vlakna..
    8.10.2017 20:07 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Připojeni, odpojení za běhu. Skript se spouští před hotplug.d. Ne, nevytvoří. Když ho ale spustím ručně nebo s rc.local po startu, vytvoří se. Ten umount tam je proto, protože jsem tam měl ještě && mount v add části. Ptal, ale ve vlákně, kde jsem primárně řešil něco jiného a tenhle dotaz tam zřejmě zanikl, omlouvám se. Podstata dotazu je, jaký rozdíl je mezi jednotlivými příkazy.. v čem je "mount" a "touch" pro systém "víc", než cryptsetup?
    8.10.2017 20:15 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Ten umount spouštíš až po vytažení flešky? To by leccos vysvětlovalo...
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 21:49 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    No ale to, proč se nespustí příkaz cryptsetup narozdíl od touch to bohužel nevysvětluje.
    8.10.2017 22:15 NN
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Jak vypada cely proces v dmesg/messages? Zkousel jsi dat pred cryptsetup nejakou prodlevu (sleep 5) a jeste by mohlo pomoct --debug ..
    8.10.2017 22:21 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Sleep 10 jsem zkoušel a nepomohlo. V dmesg vidím jen nalezení nového USB disku, víc podrobností jsem bohužel nenašel. Je to openwrt, takže se to chová řekněme nestandardně:)
    9.10.2017 08:32 NN
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Dej tam --debug a na konec '> ~/setup.log 2>&1 &'
    9.10.2017 09:23 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Díky, mám tu nová zjištění:)
    [  282.560000] usb-storage 1-1.2:1.0: USB Mass Storage device detected
    [  282.580000] scsi host1: usb-storage 1-1.2:1.0
    [  283.580000] scsi 1:0:0:0: Direct-Access     WD       Elements 10B8    1012 PQ: 0 ANSI: 6
    [  283.590000] sd 1:0:0:0: [sdb] Spinning up disk...
    [  284.620000] .....ready
    [  288.660000] sd 1:0:0:0: [sdb] 1465081856 512-byte logical blocks: (750 GB/698 GiB)
    [  288.670000] sd 1:0:0:0: [sdb] Write Protect is off
    [  288.670000] sd 1:0:0:0: [sdb] Mode Sense: 47 00 10 08
    [  288.680000] sd 1:0:0:0: [sdb] No Caching mode page found
    [  288.680000] sd 1:0:0:0: [sdb] Assuming drive cache: write through
    [  288.710000]  sdb: sdb1
    [  288.730000] sd 1:0:0:0: [sdb] Attached SCSI disk
    /Device /dev/sdb1 doesn't exist or access denied.
    Command failed with code 15: Block device required
    # cryptsetup 1.6.7 processing "/usr/sbin/cryptsetup --debug --key-file /etc/ssl/usbbackup_key luksOpen /dev/sdb1 backup"
    # Running command open.
    # Locking memory.
    # Installing SIGINT/SIGTERM handler.
    # Unblocking interruption on signal.
    # Allocating crypt device /dev/sdb1 context.
    # Trying to open and read device /dev/sdb1 with direct-io.
    # Trying to open device /dev/sdb1 without direct-io.
    # Unlocking memory.
    Takže příkaz se spouští, omlouvám se všem za zavádějící informaci:) Ale pro změnu nerozumím tomu, jak je to možné /Device /dev/sdb1 doesn't exist or access denied.. Nepomohl ani sleep 10. Mám prodloužit interval? Přitom když USB připojím, tak ruční připojení cryptsetupem zhruba po 5 vteřinách funguje. Každopádně díky všem, že jsem se posunul dál:)
    9.10.2017 10:23 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Tak jsem sleep nakonec vyšponoval až na 30 a funguje. Ale dobrý to se dá zvládnout:) Díky moc všem za pomoc.
    9.10.2017 11:11 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    To už zní skoro jako chyba v resolveru. Nemáš tam někde hledání IP podle domény?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    9.10.2017 12:38 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Co to s tím má (nebo by mohlo mít), prosím Tě, společnýho?
    9.10.2017 16:13 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Stačí někde ve skriptu některého z démonů poslat dotaz na DNS a čekat na odpověď s chybně nakonfigurovaným resolverem. Může to být i dotaz na reverzní záznam. Zkusil bych to zopakovat s odpojenou sítí.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    9.10.2017 20:21 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Myslím že skript spouštíš na špatném mistě. Evidentně ho spustíš ve chvíli, kdy ještě zařízení /dev/sdb1 neexistuje. Takže ho mužeš spustí něčím, co spustí triger "něco je v USB", ale zatím neproběhly akce, které dělá udev, aby /dev/sdb1 vytvořil. To jak je to se sleepama může být i to, že jsi skrip narval tak dopředu, že udev na něj třeba čeká, a teprve po nějaké timeoutu pustí akci, když je tam obrovský sleep. vžycky mi pomáhaly výpisy. dej si do skriptu výpis do syslogu před a po, nebo cyklus na existenci /dev/sdb1.
    9.10.2017 22:21 NN
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Podle skriptu je to poustene na starem OpenWrt pres hotplug.d ..
    9.10.2017 16:24 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    sleep není dobré řešení, resp. je to poslední zoufalý pokus to nějak obejít. Protože když spustíte ten skript, evidentně nejsou splněné podmínky, které ke svému běhu potřebuje – a tím sleep jenom oddálíte spuštění požadovaného příkazu a doufáte, že se to zatím nějak samo magicky spraví. Ono se vám to teď možná samo magicky spraví, jenže když se něco magicky samo spravuje, má tendenci se to zase samo magicky rozbíjet. Takže pokud chcete dlouhodobě udržitelné řešení, měl byste zjistit, co jsou ty další podmínky, které skript ke svému běhu potřebuje, a zajistit, aby byly splněné.
    8.10.2017 16:53 petr
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    zadna chybova hlaska? Kdyz tam pouzijes --verbose porad nic nevidis?
    8.10.2017 16:04 R
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Skontroluj navratovu hodnotu cryptsetup, pripadne jeho vystup (aj chybovy) presmeruj do nejakeho tmp suboru.
    8.10.2017 21:58 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Pod kterým uživatelem se skript spouští?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 22:07 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Řekl bych, že hotplug.d se spouští pod rootem, ale pro jistotu, jak to ověřím?
    8.10.2017 22:14 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Například když se tam dá ten touch, tak podle vlastníka vytvořeného souboru.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.10.2017 22:23 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    super, díky.. tak je to root
    8.10.2017 22:04 jekub
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    jak vite, ze se prikaz nespusti?
    8.10.2017 22:10 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    protože se nevytvoří /dev/mapper/backup (když pustím cryptsetup skriptem nebo nechám spustit v rc.local po startu, vytvoří se)
    8.10.2017 22:27 jekub
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Jenze to neznamena, ze se nespusti. Jen neudela, co potrebujete.

    Zkusil bych prikaz volani cryptsetup nahradit skriptem a logovat spusteni, volani a navratovy kod.

    8.10.2017 22:32 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    zkoušel jsem, jenže jediný log na openwrt se vyvolá příkazem logread (-f) a tam se žádná chyba neobjevila
    k3dAR avatar 8.10.2017 23:57 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    tohle si prehlid nedopatrenim nebo umyslne aby jsi mohl trollovat? ;)
    porad nemam telo, ale uz mam hlavu... nobody
    Jendа avatar 9.10.2017 04:37 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Vytvoř skript, který spustí tvůj skript s >/tmp/a 2>/tmp/b a spouštěj ten wrapper.
    9.10.2017 10:37 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Díky, vyřešeno, viz výše (sleep 20). A ještě bych měl jeden dotaz a nevím, jestli založit nové vlákno, tak to dám sem a budu doufat, že to tu zase nezanikne:) Stává se mi, že ten disk někdy změní název /dev/sdb1, což je blbý, protože cryprsetup s ním počítá. Jsou dvě možnosti, jak to ošetřit. První, že se budu odkazovat na UUID, ale na OpenWrt není cesta k dispozici. Druhá možnost je, že si podle zařízení bude pamatovat název. Jenže tady nejsou udev pravidla. Napadá vás, jak to vyřešit?
    9.10.2017 10:38 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    jen detail, sleep 30.. pardon :)
    9.10.2017 11:49 trubicoid2
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    co treba pustit lsscsi a z toho si vybrat?
    9.10.2017 18:15 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Když bych ošetřil nějak ten luksOpen, bylo by mi v podstatě jedno, jestli se USB disk připojí jako sda nebo sdb.. Ale jak v tom skriptu nastavit proměnou k luksOpen, aby např. z blkid (mám k dispozici na openwrt) vytáhl, že patřičné uuid patří třeba k /dev/sda1 a to by vložil do příkazu za luksOpen. Lze to vůbec nebo je to úplná blbost?
    9.10.2017 19:36 trubicoid2
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    man blkid

    ...

    -U uuid Look up the device that uses this filesystem uuid. For more details see the -L option.
    k3dAR avatar 9.10.2017 20:21 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    predvedeno v prikladu... nejdriv si zjistit UUID daneho LUKS oddilu a ve scriptu:
    UUID="SemNapsatRucneToUUID"
    LUKS="$(blkid -U ${UUID})"
    ...
    /usr/sbin/cryptsetup --key-file /etc/ssl/usbbackup_key luksOpen ${LUKS} backup
    ...
    
    pripadne misto nevhodneho reseni pres sleep 30, cekat ve scriptu dokud neni dostupne
    UUID="SemNapsatRucneToUUID"
    until [ $LUKS ]; do LUKS="$(blkid -U ${UUID})"; sleep 1; done
    ...
    /usr/sbin/cryptsetup --key-file /etc/ssl/usbbackup_key luksOpen ${LUKS} backup
    ...
    
    porad nemam telo, ale uz mam hlavu... nobody
    9.10.2017 20:50 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Tak tohle je pomoc nad zlato.. a dokonce to i chápu:) Zítra otestuju a dám vědět. MOC DÍKY:)
    k3dAR avatar 9.10.2017 23:50 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    jen pozor, to SemNapsatRucneToUUID je potreba UUID primo LUKS oddilu, tedy pred odemcenim, ve vypisu blkid je zobrazen na radku koncicim TYPE="crypto_LUKS", tedy ne aby jsi vkladal UUID jiz odemceneho, v tvem pripade ne z radku zacinajici /dev/mapper/backup ;)
    porad nemam telo, ale uz mam hlavu... nobody
    10.10.2017 08:23 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    jj, to jsem pochopil, díky:)
    10.10.2017 08:56 Luky
    Rozbalit Rozbalit vše Re: Skript spustí jen něco
    Šlape to jako víno.. ještě jednou díky (všem:). PS: To odpojování asi líp nevymyslím.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.