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í
×
včera 17:00 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2018-11-13 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Přehled novinek v poznámkách k vydání. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Simon Long z novinek zdůrazňuje multimediální přehrávač VLC s hardwarovou akcelerací nebo vývojové prostředí pro Python Thonny ve verzi 3. Ke stažení jsou nově také lite a full obrazy Raspbianu. Raspbian Full opět obsahuje software Mathematica.

Ladislav Hagara | Komentářů: 0
včera 02:00 | Nová verze

Krátce po vydání Debianu 9.6 oznámil Tomáš Matějíček vydání verze 9.6 dnes již na Debianu založené živé linuxové distribuce Slax. Vedle vylepšení z Debianu je opraveno několik malých chyb. Opraveno bylo bootování pomocí PXE. Novinkou je skript s názvem pxe pro spuštění vlastního PXE serveru.

Ladislav Hagara | Komentářů: 0
včera 01:00 | Nová verze

Byla vydána beta verze Red Hat Enterprise Linuxu 8. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 3
15.11. 13:44 | IT novinky

Nadace Raspberry Pi na svém blogu představila (YouTube) jednodeskový počítač Raspberry Pi 3 Model A+. Toto menší Raspberry Pi 3 lze koupit za 25 dolarů.

Ladislav Hagara | Komentářů: 0
15.11. 06:00 | Pozvánky

Dnes a zítra probíhá v Praze konference Internet a Technologie 18 pořádaná sdružením CZ.NIC. Sledovat ji lze online.

Ladislav Hagara | Komentářů: 0
15.11. 01:11 | Komunita

V září proběhl v Madridu Open Source CubeSat Workshop 2018. Videozáznamy přednášek byly zveřejněny na YouTube.

Ladislav Hagara | Komentářů: 1
15.11. 00:55 | Zajímavý software

Společnost Amazon představila Amazon Corretto. Jedná se o fork a distribuci OpenJDK (Open Java Development Kit) s dlouhodobou podporou od Amazonu. Ke stažení je preview verze 8. V plánu je také verze 11. Zdrojové kódy jsou k dispozici na GitHubu. Jedná se o reakci na oznámení společnosti Oracle, že bezplatné aktualizace její Javy nebude možné po lednu 2019 používat komerčně. Název Coretto vychází z Caffè corretto, tj. espressa s alkoholem.

Ladislav Hagara | Komentářů: 9
14.11. 12:44 | Nová verze

Po roce vývoje od vydání verze 5.2.0 byla vydána verze 5.3.0 svobodného integrovaného vývojového prostředí KDevelop (Wikipedie). Novinkou je analyzátor Clazy. Vylepšena byla podpora programovacích jazyků C++, PHP a Python. Ke stažení a k vyzkoušení je i binární balíček s KDevelopem 5.3.0 ve formátu AppImage.

Ladislav Hagara | Komentářů: 0
14.11. 05:55 | Komunita

Ubuntu 19.04 bude mít kódové jméno Disco Dingo. Dle oznámení v diskusním listu ubuntu-devel-announce je ve vývojové verzi Disco Dinga výchozím Pythonem 3 verze 3.7. Perl byl aktualizován na verzi 5.28. OpenSSL 1.0 bude nahrazeno OpenSSL 1.1.1 LTS. Nové instalace Dinga budou mít sloučený /usr. Stane se tak 7 let po sloučení /usr ve Fedoře nebo Arch Linuxu.

Ladislav Hagara | Komentářů: 9
14.11. 02:22 | IT novinky

V pondělí a úterý proběhl v San Franciscu Chrome Dev Summit 2018. Přehled dění v příspěvcích na Chromium Blogu. Videozáznamy přednášek na YouTube. Představen byl například web pro webové vývojáře web.dev nebo rozšíření webového prohlížeče Chrome s názvem VisBug (YouTube) určené pro webdesignery. Slíbená je podpora Firefoxu.

Ladislav Hagara | Komentářů: 0
Jak nejčastěji otevíráte dokumenty na počítači?
 (91%)
 (4%)
 (6%)
Celkem 109 hlasů
 Komentářů: 9, poslední 15.11. 22:46
Rozcestník

Dotaz: BASH script je příliš ukecaný

Mark Stopka avatar 19.8. 08:34 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
BASH script je příliš ukecaný
Přečteno: 932×
Ahoj, snažím se napsat jednoduchý script, který mi namountuje LUKS šifrované disky na Turris Omnia... Zatím mám následující:
#!/bin/bash

verbose=0

if [ -b /dev/sda ]; then
  echo "Disk /dev/sda detected!"
  set $disks
else
  echo "Disk /dev/sda not detected!"
  unset $disks
fi

if [ -b /dev/sdb ]; then
  echo "Disk /dev/sdb detected!"
  set $disks
else
  echo "Disk /dev/sdb not detected!"
  unset $disks
fi

if [ -z ${disks+x} ]; then
  if [ -b /dev/md0 ]; then
    echo "RAID md0 already exists"
  else
    if mdadm --assemble /dev/md0 /dev/sda /dev/sdb; then
      echo "RAID /dev/md0 assembled!"
    else
      echo "Raid /dev/md0 failed to assemble!"
    fi
  fi
else
  echo "Disks sda and sdb are not present!"
fi

Avšak, když jej spustím, tak je neskutečně ukecaný, viz níže:
root@turris01:~# mount-internal-crypto-drives bbb
Disk /dev/sda detected!
BASH=/bin/bash
BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="1")
BASH_ARGV=([0]="bbb")
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/usr/local/bin//mount-internal-crypto-drives")
BASH_VERSINFO=([0]="4" [1]="4" [2]="11" [3]="1" [4]="release" [5]="arm-openwrt-linux-gnu")
BASH_VERSION='4.4.11(1)-release'
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=turris01.czko.perlur.cloud
HOSTTYPE=arm
IFS=$' \t\n'
LOGNAME=root
MACHTYPE=arm-openwrt-linux-gnu
MAIL=/var/mail/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/usr/sbin:/bin:/sbin:/root/.acme.sh/:/usr/local/bin/
PIPESTATUS=([0]="0")
PPID=14913
PS4='+ '
PWD=/root
SHELL=/bin/ash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
SSH_AUTH_SOCK=/tmp/ssh-NqAmXg83Kd/agent.14911
SSH_CLIENT='192.168.1.12 53651 22'
SSH_CONNECTION='192.168.1.12 53651 82.209.54.74 22'
SSH_TTY=/dev/pts/0
TERM=xterm-256color
UID=0
USER=root
_='Disk /dev/sda detected!'
verbose=0
Disk /dev/sdb detected!
BASH=/bin/bash
BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="1")
BASH_ARGV=([0]="bbb")
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/usr/local/bin//mount-internal-crypto-drives")
BASH_VERSINFO=([0]="4" [1]="4" [2]="11" [3]="1" [4]="release" [5]="arm-openwrt-linux-gnu")
BASH_VERSION='4.4.11(1)-release'
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=turris01.czko.perlur.cloud
HOSTTYPE=arm
IFS=$' \t\n'
LOGNAME=root
MACHTYPE=arm-openwrt-linux-gnu
MAIL=/var/mail/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/usr/sbin:/bin:/sbin:/root/.acme.sh/:/usr/local/bin/
PIPESTATUS=([0]="0")
PPID=14913
PS4='+ '
PWD=/root
SHELL=/bin/ash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
SSH_AUTH_SOCK=/tmp/ssh-NqAmXg83Kd/agent.14911
SSH_CLIENT='192.168.1.12 53651 22'
SSH_CONNECTION='192.168.1.12 53651 82.209.54.74 22'
SSH_TTY=/dev/pts/0
TERM=xterm-256color
UID=0
USER=root
_='Disk /dev/sdb detected!'
verbose=0
RAID md0 already exists
root@turris01:~# 
Nevíte čím to může být způsobeno?

Řešení dotazu:


Odpovědi

19.8. 09:05 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Je to způsobeno voláním set bez parametrů (konkrétně set $disks, kde $disks je nedefinovaná proměnná). set bez parametrů vypíše všechny proměnné prostředí.
Mark Stopka avatar 19.8. 21:22 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Ok, já myslel že právě set ji zadefinuje... :-/
19.8. 09:06 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Nikde jste nenastavil proměnnou disks a když spustíte příkaz set bez parametrů, vypíše hodnoty všech proměnných. Ale abych pravdu řekl, nením mi moc jasné, o co se to tam s tou proměnnou vlastně snažíte (a co očekáváte, že by v ní mělo být).
Mark Stopka avatar 19.8. 21:19 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Cokoli, pokud by v ní bylo cokoli tak se nespustí mdadm; samozřejmě script ještě nebyl kompletní, protože při kontrole sdb jsem ještě nekontroloval stav té proměnné, pokud by byla nenastavená tak by se test na sdb vůbec nespustil.
k3dAR avatar 19.8. 21:27 k3dAR | skóre: 51
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
pak nemuzes "set $promena" ale "set promena"
porad nemam telo, ale uz mam hlavu... nobody
19.8. 21:32 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
V tom případě je problém asi v nepochopení, co dělají shellové příkazy set a unset. První umožňuje nastavit poziční parametry shellu (se kterými ale skript nepracuje) a druhý sice odstraní proměnnou, ale jako argument musí dostat její jméno (ne hodnotu).
Řešení 3× (Filip Jirsák, mimi.vx, Petr Šobáň)
19.8. 21:36 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný

Takže jestli to chápu dobře, ta pasáž na začátku měla vypadat spíš nějak takhle

ALL_DISKS="/dev/sda /dev/sdb"

disks=""
for d in $ALL_DISKS; do
    if [ -b "$d" ]; then
        disks="$disks $d"
    fi
done

Výsledkem by bylo, že v proměnné disks budou ta ze zařízení v ALL_DISKS, která skript v systému najde.

19.8. 10:03 mankind_boost
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
To mas z toho ze jsi veganska palice. Pichni si B12 a dalsich 100 vitaminu, ktere lze ziskat jen z masa, a nastav $disks
Mark Stopka avatar 19.8. 21:21 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Tady má někdo komplexy :) Má úroveň B12 je naprosto v pořádku, děkuji. Stejně tak železa, zinku, kalcia a vitamínu D.
19.8. 21:58 mankind_boost
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Vis jak poznas vegana? Rekne ti to
Mark Stopka avatar 20.8. 03:45 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
A nechceš to své tvrzení alespoň ozdrojovat, když už plácáš hlouposti?
k3dAR avatar 20.8. 06:55 k3dAR | skóre: 51
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
vis jak poznas hovado? zvoli si nick jako ty ;-)
porad nemam telo, ale uz mam hlavu... nobody
31.8. 13:29 mankind_boost | skóre: 7 | Hliněná chýše, 5482/3
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Tak dík no.
Jen skutečný mankind_boost je zárukou kvality.
Mark Stopka avatar 6.9. 10:35 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Komplexy? I to se dá léčit...
6.9. 18:59 mankind_boost
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Víš co už se nedá léčit? Osteoporóza. Dobře sis podělal život
Mark Stopka avatar 6.9. 20:24 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Škoda že tady nejdou postovat emoji ;-)
6.9. 20:26 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Když tak čtu tohle vlákno, napadá mne ještě jedna věc, která se moc nedá léčit…
7.9. 12:03 manind_boost
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Mark Stopka avatar 7.9. 12:14 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
There you go... and now go back in your corner to cry.
7.9. 11:53 mankind_boost | skóre: 7 | Hliněná chýše, 5482/3
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Všiml sis, že jsem jiná osoba než on? Nebo je to pro některé příliš mentálně náročný úkol...
Jen skutečný mankind_boost je zárukou kvality.
Řešení 3× (Filip Jirsák, Mark Stopka (tazatel), Petr Šobáň)
19.8. 10:28 Kit | skóre: 42 | Brno
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Zkus tohle - je to ještě méně ukecané, než jsi původně zamýšlel
#!/bin/bash

declare -a disks=("/dev/sda" "/dev/sdb")
raid="/dev/md0"
for disk in ${disks[@]}; do
    if [ ! -b "$disk" ]; then
        echo "Disk $disk not detected!" >&2
        exit 1
    fi
done
if [ -b "$raid" ]; then
    echo "RAID $raid already exists" >&2
    exit 2
fi
mdadm --assemble "$raid" ${disks[@]}
if [ ! -b "$raid" ]; then
    echo "Raid $raid failed to assemble!" >&2
    exit 3
fi
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Mark Stopka avatar 19.8. 21:20 Mark Stopka | skóre: 58 | blog: Paranoidní blog | European Economic Area
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Díky, s poli v bashi jsem už tak dlouho nedělal, že se mi s tí nechtělo patlat. Takže díky za pomoc. Tohle funguje, jen trošku poupravím!
20.8. 13:42 Kit | skóre: 42 | Brno
Rozbalit Rozbalit vše Re: BASH script je příliš ukecaný
Dá se to udělat i se stringem - viz výše v jiném příspěvku.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

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.