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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

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

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 25
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 785 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Cast skriptu..kontrola parametru a IF

6.6.2005 17:32 xhonzax | skóre: 1
Cast skriptu..kontrola parametru a IF
Přečteno: 75×
Potrebuju aby tato cast skriptu zkontrolovala jestli uzivatel, ktery je zadavan jako parametr skriptu existuje nebo jestli bylo zadano all...jinak konec s chybobou hlaskou>>

if test $1 != "cat /etc/passwd | grep ^[^:]*:[^:]*:[^:]*|cut -f 1 -d ":"" || test $1 != all
then
echo "Zadali jste uzivatele, ktery neexistuje, tudiz nespustil zadne procesy"
exit
fi

Toto mi nefunguje, jak to upravit? Diky moc za odpovedi Honza

Odpovědi

6.6.2005 17:48 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
"cat /etc/passwd | grep ^[^:]*:[^:]*:[^:]*|cut -f 1 -d ":""
je nesmysl, to se expanduje na ten řetězec v uvozovkách, měls asi na mysli $(...) nebo `...`, i tak by to moc nefungovalo.

No nic, nejlepší co jsem vymyslel je
if cut -d: -f1 | grep -F -x -q "$1"; then
  echo "OK"
else
  echo "neexistuje"
fi
najdi si v man grep co ty optiony znamenají (btw asi nebudou přenositelné)

Aby to bylo skutečně korektní, tak by to chtělo C prográmek, co zavolá getpwnam(argv[1]).
6.6.2005 17:49 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
cut -d: -f1 /etc/passwd samozřejmě.
6.6.2005 17:58 xhonzax | skóre: 1
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Dekuju. Funguje to.
6.6.2005 21:08 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Vím, že na Python se tu nikdo neptal, ale funguje mi tohle:
#!/usr/bin/env python
import pwd

user = 'all'

if (cmp(user,'all')):
  try:
    print pwd.getpwnam(user)
  except KeyError:
    print "Tento uzivatel neexistuje"
else:
  print "Tohle se tyka vsech uzivatelu"
Odteďka chci mít všude login "all" ;-)
6.6.2005 21:46 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
IMHO to děláte zbytečně složitě, stačí využít návratový kód (e)grepu:
if egrep -q "^${1}:" /etc/passwd || [ "x$1" = xall ]; then
  echo OK
else
  echo chyba
fi
6.6.2005 22:06 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Tohle je zase až moc jednoduše, nehlídá to tečky a pod. v "$1" ("regexp injection"? :-)).
6.6.2005 22:36 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
OK, OK, tak se z toho nejdřív vyházejí nepohodlné znaky:
  x=`echo "$1" | LC_CTYPE=C tr -cd '[a-zA-Z0-9_]'`
  if [ "x$1" != "x$x" ];
    echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-)
    exit 1
  fi

Na druhou stranu, kdyby si s tím člověk trochu pohrál, mohl by v tom být i určitý záměr: mohl by se zadávat regulární výraz a hledaly by se procesy kteréhokoli uživatele, který mu vyhovuje (nebo co to měl ten skript dělat)… :-)

7.6.2005 00:45 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
:-)

BTW, nevíte kde má původ ten zápis
test "x$param" = "xvalue"
      ^           ^
? Používá to i Autoconf, takže asi existoval systém, kde nefungoval test s prázdným parametrem, ale netuším jaký (PDP-11 ve škole nemáme :-)).
7.6.2005 00:58 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Ten problém není AFAIK kvůli prázdným parametrům, ale kvůli parametrům, které vypadají jako standardní podmínky příkazu test. Nějak se mi ale nedaří vyrobit nějaký dostatečně úderný příklad ('test -e = -f' i 'test -e = -e' mi kupodivu fungují správně s interním i externím testem).
7.6.2005 01:19 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
A jo. GNU test, bash, ash a pdksh (víc toho u sebe nemám) se chovají podle očekávání; našel jsem tohle
$ uname -srv 
IRIX64 6.5 04091957
$ /usr/bin/test -n = blabla; echo $?
0
Takže smysl to asi má pořád.
7.6.2005 10:53 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
  x=`echo "$1" | LC_CTYPE=C tr -cd '[a-zA-Z0-9_]'`
  if [ "x$1" != "x$x" ];
    echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-)
    exit 1
  fi
To se nám to krásně zjednodušilo. Až na ten fork, fork, exec a přitom je to úplně zbytečné.
case "$1" in
    *[^a-zA-Z0-9_]*)
         echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-)
         exit 1;;
esac
To je ekvivalent uvedeného, ale víc jak 20x rychlejší. Nechce hledat přesné omezení na username abych to napsal přesněji.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 11:28 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Bez case je to ještě jednodušší
[[ "$1" == *[^a-zA-Z0-9_]* ]] && {
  echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-)
  exit 1
}
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 13:06 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Všichni jste ostudy. Nikoho nenapadlo použít to nejjednodužší a nejbezpečnější řešení.
if ! id "$1" >&/dev/null && [ "x$1" != xall ]
then
    echo "Zadali jste uzivatele, ktery neexistuje, tudiz nespustil zadne procesy"
    exit 1
fi
P.S.: Ano, opravdu tam má být && a ne || protože chyba nastane, když uživatel není a zároveň není zadáno all.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 13:26 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Sakra :-) já věděl, že něco takového musí existovat, ale odradil mě finger
$ finger chroustal; echo $?
finger: chroustal: no such user.
0
7.6.2005 13:40 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Já jsem jsem přesvědčený, že jsem někde viděl utilitu, která byla ekvivalentem getpwnam(3), ale nemůžu se teď spomenout ani ji nikde najít. To přece není možné aby taková utilita nebyla. To by bylo padlé nahlavu, přece nebudu při zjišťování uživatelova shellu parsovat passwd(5). Nehledě na to, že tam taky vůbec nemusí být.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 18:45 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
Přinejhorším by nebyl problém si ji za chvíli napsat…
7.6.2005 18:50 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Cast skriptu..kontrola parametru a IF
No jo, něco v tom duchu mne napadlo, jenže jsem zkoušel laborovat s něčím ve stylu ~$1, ale když jsem zjistil, že pořadí expanzí je opačné, než bych potřeboval, opustil jsem tuto cestu a vrhnul se na parsování /etc/passwd. Na druhou stranu, v praxi bych to asi stejně radši napsal v céčku…

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.