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 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

Ladislav Hagara | Komentářů: 0
včera 02:02 | Komunita

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

Ladislav Hagara | Komentářů: 0
21.1. 22:11 | Nová verze

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
20.1. 17:00 | Nová verze

Byl vydán Docker 1.13. Přehled novinek na YouTube a v poznámkách k vydání na GitHubu. Docker umožňuje běh aplikací v softwarových kontejnerech (Wikipedia).

Ladislav Hagara | Komentářů: 4
20.1. 15:51 | Komunita

Mozilla.cz informuje, že nástroje pro webové vývojáře se možná oddělí od Firefoxu a stanou doplňkem. Nástroje pro webové vývojáře prošly velkým přepisem a tým, který se stará o jejich vývoj, by uvítal možnost jejich častějších aktualizacích nezávisle na vydávání nových verzí Firefoxu.

Ladislav Hagara | Komentářů: 10
20.1. 07:00 | Humor

Čtenářům AbcLinuxu vše nejlepší k dnešnímu Dni zvýšení povědomí o tučňácích (Penguin Awareness Day).

Ladislav Hagara | Komentářů: 0
20.1. 06:00 | Komunita

Bylo spuštěno hlasování o přednáškách a workshopech pro letošní InstallFest, jenž proběhne o víkendu 4. a 5. března v Praze. Současně byla oznámena změna místa. InstallFest se letos vrací zpět na Karlovo náměstí do budovy E.

Ladislav Hagara | Komentářů: 0
20.1. 02:48 | Komunita

Greg Kroah-Hartman potvrdil, že Linux 4.9 je jádrem s prodlouženou upstream podporou (LTS, Long Term Support). Podpora je plánována do ledna 2019. Aktuální jádra s prodlouženou podporou jsou tedy 3.2, 3.4, 3.10, 3.12, 3.16, 3.18, 4.1, 4.4 a 4.9.

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

Výrobce síťových prvků, společnost Netgear, spustila nový program, který slibuje vývojářům, expertům, ale i běžným uživatelům vyplacení finanční odměny za nalezení bezpečnostních chyby v jejich produktech. Za nalezení zranitelnosti v hardware, API nebo mobilní aplikaci nabízí odměnu od 150 do 15 tisíc dolarů (dle závažnosti).

Michal Makovec | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (10%)
 (2%)
 (74%)
 (3%)
 (10%)
Celkem 363 hlasů
 Komentářů: 25, poslední 21.1. 13:34
Rozcestník
Reklama

Dotaz: perl/bash konverzia rwx na octal

10.10.2011 11:38 nicco | skóre: 6
perl/bash konverzia rwx na octal
Přečteno: 243×

Ahoj,

nenapisal uz niekto perl alebo bash skript na konverziu pristupovych prav z formatu -rxwrwxrwx? Neico som zacal, ale uz nedokazem rozumne zaimplementovat sgid/suid a sticky bit?

Ide o Solaris10, tkaze nie je tam stat ani gnu find a teda napr toto nefunguje:

$ perl -e'printf "%o\n", ( stat "/etc" )[ 2 ]'
40755

Najlepsi by bol perl/bash skript pokial mjozno bez dodatocnych modulov, len so zakladnymi prikazmi.

Bud sa mi teda podari vylistovat prava na Solarise v osmickovom tvare a potom nepotrebujem konverziu, alebo musim napisat skritp

Diky


Řešení dotazu:


Odpovědi

10.10.2011 13:30 NN
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Nejak jsem nepochopil, ceho tim chces dosahnout, ale opravneni se nastavuje obdobne viz:

http://snap.nlc.dcccd.edu/reference/sysadmin/julian/ch18/402-404.html

NN
10.10.2011 13:58 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal

Ide o to, ze mam vystup z ls -al:

-rwxrwxrwx /cesta/subor

a chcem vytvorit pomocou skriptu podla toho vzoru: chmod 777 /cesta/subor, tda skonvertovat rwxrwxrwx na 777

-rwxrwxrwx este nejako zvladnem naskriptovat, ala ked sa tam prida s/S/t/T a teda musim mat neico ako 2640, 4600, 1777,... tak to uz nedokazem.

Inak samozrejeme viem, ako sa v unixe nastavuje sticky bit, len potrebujem konverziu z rwx na 777, pretoze ls ma jeden format a chmod na iny format.

10.10.2011 14:41 smajl | skóre: 3
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
smajl@leila:~$ stat -c %a .bashrc 644 smajl@leila:~$ ls -l .bashrc -rw-r--r-- 1 smajl smajl 3116 May 9 09:50 .bashrc
10.10.2011 14:42 smajl | skóre: 3
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
ospravedlnujem sa, takto to ma vyzerat spravne:
smajl@leila:~$ stat -c %a .bashrc
644
smajl@leila:~$ ls -l .bashrc
-rw-r--r-- 1 smajl smajl 3116 May  9 09:50 .bashrc
10.10.2011 15:49 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Bohuzial stat sa na Solarise nenachadza, teda aspon na tom, ktory mam ja, ale diky.
herne the hunter avatar 10.10.2011 15:00 herne the hunter | skóre: 10 | tor lara
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
haha, tak jsem zkusil oprášit svoje znalosti bashe (moc se to nepovedlo ;)) a vyplodil tuhle hrůzu:

#!/bin/bash

if [ "${#1}" -ne 10 ]; then
	exit 0;
fi

declare -A perm
perm["r"]=4
perm["w"]=2
perm["x"]=1
perm["s"]=1
perm["t"]=1
perm["-"]=0
perm["S"]=0
perm["T"]=0

res[0]=0
res[1]=0
res[2]=0
res[3]=0

for i in `seq 1 $((${#1} - 1))`; do
	znak=${1:$i:1}
	idx=$((1 + (($i - 1) / 3)))
	res[$idx]=$((${res[$idx]} + ${perm[$znak]}))
	if [ "${znak}" == "s" ] || [ "${znak}" == "S" ] || [ "$znak" == "T" ] || [ "${znak}" == "t" ]; then
		res[0]=$((${res[0]}  + (1 << (3 - $idx))))
	fi
done

echo ${res[0]}${res[1]}${res[2]}${res[3]}

ale tak snad je důležitý, že to funguje, ne? :D (vstup to předpokládá ve tvaru ls -l soubor | awk '{print $1}')
i am herne the hunter and you are a leaf driven by the wind.
10.10.2011 15:48 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal

Tak to je hodne dobre a funguje to s s/S/t/T !

Diky moc

(este keby sa mi podarilo to naportovat do perlu, tak to uplne super;-) )

10.10.2011 16:06 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal

V linuxe to fungovalo, ale na Solarise uz nie:

bash-3.00$ bash convert_rwx.sh -rw-r-----

convert_rwx.sh: line 7: declare: -A: invalid option

declare: usage: declare [-afFirtx] [-p] [name[=value] ...]

convert_rwx.sh: line 13: -: syntax error: operand expected (error token is "-")

convert_rwx.sh: line 29: seq: command not found

0000

bash-3.00$

10.10.2011 16:59 pm
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
my @A=stat $ARGV[0];die sprintf "%04o", $A[2] & 07777 ;
10.10.2011 17:23 l4m4
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Asi tak. Konvertovat perlem výstup z ls, když se dají vlastnosti souboru zjistit snáz přímo v perlu, je zvrhlé.
11.10.2011 10:21 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal

Ano mate pravdu, lepsie je to zistip priamo cez stat, ako konvertovat:  
find . -type f | perl -e ' while (<STDIN>) { chomp; printf "%s %4o\n", $_, (stat $_)[2] & 07777; }'
./file1 644
./file2 644
./file3 600

10.10.2011 20:45 NN
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));printf("%0o",k);print}'
One-liner, netstovano..

NN
pepe_ avatar 10.10.2011 21:11 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal

Nebylo to tu uz ?

#!/bin/bash
ls -lhF $1 | while read DATA
do
case "${DATA:0:1}" in
"-"|"d")
PERM=$( echo "${DATA:1:9}" | sed 's/-/0/g;s/r/4/g;s/w/2/g;s/x/1/g' )
P_US=$((${PERM:0:1}+${PERM:1:1}+${PERM:2:1}))
P_GR=$((${PERM:3:1}+${PERM:4:1}+${PERM:5:1}))
P_OT=$((${PERM:6:1}+${PERM:7:1}+${PERM:8:1}))
DATA=$( echo "$DATA" | sed "s/${DATA:0:10}/${P_US}${P_GR}${P_OT}/" )
echo "$DATA"
;;
*)
continue
;;
esac
done
exit 0
11.10.2011 10:30 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Moznosti je viacero, najlepsie je asi priamo cez perl/stat zistit co potrebujem a vyhnut sa konvertovaniu, ale kedze som povodne smeroval otazku na konverziu v perle/bashi, tak som oznacil toto riesenir ako spravne. Diky
martin-ux avatar 10.10.2011 21:33 martin-ux | skóre: 18 | Bratislava
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
az teraz som si vsimol, ze si spravil thread aj v programatorskej casti. v tvojom prvom threade som ti pastol sposob ako to spravit v perle; ako vsak pozeram tak ti to uz navrhol aj tu niekto hore.
..when you do things right, people won't be sure you've done anything at all..
11.10.2011 10:25 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Mal som 2 moznosti, zistit hexa prava priamo v Solarise, alebo konvertovat ich v perle/bashi. Rieseni je viac, ale asi najlepsie je to zistit uz v Solarise cez perl/stat a vyhnut sa zlozitemu konvertovaniu.
10.10.2011 21:34 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
napr toto nefunguje:
$ perl -e'printf "%o\n", ( stat "/etc" )[ 2 ]'
40755
Mně přijde, že to funguje přesně jak má.
In Ada the typical infinite loop would normally be terminated by detonation.
11.10.2011 10:23 nicco | skóre: 6
Rozbalit Rozbalit vše Re: perl/bash konverzia rwx na octal
Toto je moja chyba, hned som to zamietol, lebo som si neuvedomil, ze stat je (aj) funkcia perlu, muslel som, ze sa vola stat z OS, teda gnu stat, ktory na Solarise standardne nie je.

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.