Mire jo neked egy butitott shell? 
Mire jo neked egy butitott shell? 

A router fw-ek általában ilyennel működnek (Tomato, openwrt dd-wrt az ú.n. busybox-ra épül)
...
Sziasztok!
Tudna nekem segíteni valaki shell script ügyben?
Iskolába kéne a Zh - hoz, de nem igazán tudom, hogy melyik az eleje meg a hátulja. 
Ez lenne a feladat:
Írjon shell scriptet, amely az alábbi fájl bejegyzéseket a megfelelő jogosultságokkal
együtt létrehozza az aktuális könyvtáron belül:
Név: Típus: Jogosultság: Helye:
A könyvtár rwxr-xr-x .
B könyvtár rwxr-sr-x A
C állomány (C,D hard link) rw-r----- A
D állomány (C,D hard link) rw-r----- B
E B-re mutató szimbolikus link rwxrwxrwx A
Megoldás:
mkdir A; chmod 755 A
mkdir A/B; chmod 2755 A/B
echo > A/C; chmod 640 A/C
ln A/C A/B/D
ln -s B A/E
Ezt valaki el tudná magyarázni, hogy mi hogy van és miért?
Köszönöm előre is!
Szerk.: sajnos össze csúszott, de szerintem aki tud segíteni, az érti így is.
[ Szerkesztve ]
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Ha valaki elmondja, mi akar lenni a "(C,D hard link)" szöveg, pláne így, duplázva, akkor a többit el tudom magyarázni. 
---
De nem teljesen értem, hogy te mit nem értesz. Felül a feladat, alatta a megoldás, egy többé-kevésbé korrekt shell script formájában. Az egyes parancsok magyarázata kellene?
...

Az akar lenni, hogy a C és a D ugyanarra az inode-ra hard link.
Jester

Tesemértedhogymitnemértek. 
Persze, hogy értem, csak hülyén van megfogalmazva, erre próbáltam "finoman" célozni: ha szó szerint veszem a feladatot, akkor C-t és D-t is hardlinkként kell létrehozni úgy, hogy egymásra mutassanak. Az meg kb. tyúk-tojás problémakör. (ez meg tképp szimpla kötekedés részemről.
)
...
Hát mondjuk az kéne, hogy a megoldásban melyik sor mit csinál?
Mert a Zh - ba a feladat mindig más.
Pl.: lehet ez is egy példa:
Név: Típus: Jogosultság: Helye:
A D-re mutató szimbolikus link rwxrwxrwx B
B könyvtár rwxr-sr-x .
C állomány (C,D hard link) rw-r----- E
D állomány (C,D hard link) rw-r----- B
E könyvtár rwxr-x--t B
Na és itt már gondba vagyok, hogy akkor hogy is van ez? 
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Csak hibás kötekedés, mivel a hard linkek nem egymásra mutatnak, hanem az inode-ra. Persze "pucér" inode-t nem tudsz létrehozni, rögtön kapsz hozzá 1 hard linket induláskor. De a végén C és D tökéletesen egyenértékű, nem tudod megmondani melyik az "igazi". Nem úgy, mint symlink esetén.
Jester

Ha már ennyire rámentél a külső parancsok eliminálására (nagyon helyesen) akkor azért azt se felejtsd el, hogy a bash kiválóan szét tudja szabdalni a stringet, nem kell hozzá a sed. Az adott példában ha jól látom egyszerűen ident=${i//_*html/} avagy a string végét feltételezve ident=${i%%_*html}.
Jester

Ez igaz, de az inode-ot létre kell hozni valahogy, addig nem tudsz rá hard linket gyártani. 
...

Ez már nekem új. Ksh-t tanultam valamikor, de már annak a nagy részét is elfelejtettem. 
...
(#562) HUNNIA1920 válasza HUNNIA1920 (#557) üzenetére
No akkor senki se tud segíteni? 
Sürgős lenne, aztán akkor megpróbálok más fórumokba segítséget kérni, ha itt nem kapok választ. Jövő héten Zh és addigra kéne valami.
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Az a baj, hogy én továbbra sem értem, mit nem értesz... a feladatot nem tudod értelmezni?
...
Nem igazán tudom máshogy magyarázni. 
Adott egy feladat és adott egy megoldás. A megoldásba mi micsoda?
Vagy akkor mondom úgy, hogy a 2. feladat amit bemásoltam, annak mi a megoldása? Na így már talán könnyebb lesz. 
Szerk.: ja és ugye ez a feladat: "Írjon shell scriptet, amely az alábbi fájl bejegyzéseket a megfelelő jogosultságokkal együtt létrehozza az aktuális könyvtáron belül:".
[ Szerkesztve ]
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Amit először beírtál, az egyértelmű, de szerintem korábban írtam is: a feladat 1. sorának a megoldások 1. sora a megoldása. A 2.-é a 2. stb.
Szóval így továbbra sem tudok mit mondani...
...
Na és akkor a 3. és 4. sor megoldása miért nem egyezik meg? Mert elvileg mind két sorban ugyan azt kellene csinálni, csak más a név és a hely.
"echo > A/C; chmod 640 A/C
ln A/C A/B/D"
Így nem lehetne a 4. sort: echo > B/D; chmod 640 B/D ?
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Azért, mert a feladat (számomra kissé értelmetlenül megfogalmazva) az volt, hogy a C és a D nevű file fizikailag azonos legyen, csak eltérő néven kerüljenek a könyvtárakba. Ehhez előbb létre kellett hozni egy file-t, ez volt a C. Amikor az "echo >C"-vel létrehozod a file-t, akkor keletkezik hozzá egy könyvtár bejegyzés és kap egy ú.n. inode-t. A második parancs annyit csinált, hogy készített egy újabb könyvtárbejegyzést másik könyvtárba, más néven, ami fizikailag ugyanarra a file-ra/inode-ra mutat.
Tehát végeredményben keletkezett egyetlen file-od ami több néven elérhető.
Ha a D-t is "echo >"-val hozod létre, akkor a két file-nak semmi köze nem lesz egymáshoz.
Az
echo > A/C
ln A/C A/B/D
után ha beleírsz valamit az A/C-be és megnézed az A/B/D tartalmát, akkor abban is látni fogod a változást.
...
Tehát akkor a 2. példa megoldásának ez jó:
mkdir B; chmod 2755 B
mkdir B/E; chmod ? B/E
echo > E/C; chmod 640 E/C
ln E/C E/B/D
ln -s D B/A
A 2. sornál nem tudom mi lesz a parancs (chmod után), mert a jogosultságban kiegészítő bit is van és azt nem igazán értem, hogy hogy is van.
A többi különben jó?
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

http://itcafe.hu/tema/a_nagy_shell_script_topik/hsz_557-557.html
erről beszélsz?
...
Igen-Igen. 
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Nagyjából jónak tűnik.
A ? kapcsán meg man chmod
...
Ezt a "man chmod" - ot nem igazán értettem, de mindegy.
Kicsit utána olvastam ezeknek a kiegészítő biteknek és azt találtam, hogy 3 féle létezik: a setuid, a setgid és a sticky bit. A setuid - nál a usernél változik a végrehajtás (x) s - re, a setgid - nél a csoport végrehajtás lesz s, és a sticky - nél meg az other végrehajtás lesz t.
De most pl. Parancs: chmod 4755, Eredményezett jog: rwsr-xr-x - nél a 4 - es szám mit jelent? Mert a 755 az ugye 111 101 101 a bináris maszkok módszere szerint és ugye a user - nél lesz az x betű s. De azt a 4 - es számot nem értem. Annyit tudok, hogy alapértelmezésként 0 áll az első helyen, csak azt nem tüntetjük fel.
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Úgy emlékszem,
4000 - setUID
2000 - setGID
1000 - sticky bit.
Ez utóbbinak eredetileg a programok/library-k esetében volt jelentősége, innen a neve (valami olyasmi rémlik, hogy nem lehetett őket kilapozni a memóriából), mostanság meg valami törléssel kapcsolatos dologra használják, de inkább nem írom le, mert kissé hiányosan emlékszem rá.
A man chmod meg annyi, hogy bemész unix/linux shellbe (windows-on telepítesz egy cygwin-t és annak a shelljébe) és kiadod a man chmod parancsot.
...
Na így már rendben van. 
Erre voltam kíváncsi, hogy melyik hányas számmal kezdődik. Attól féltem, hogy ez is mindenhol más, de így akkor már tudni fogom, hogy pl.: 2xxx - es az setUID - os. Remélem így már menni fog a Zh is. 
Köszi szépen a türelmet és a segítséget 
Szerk.: tehát akkor így lesz:
mkdir B; chmod 2755 B
mkdir B/E; chmod 1751 B/E
echo > E/C; chmod 640 E/C
ln E/C E/B/D
ln -s D B/A
chmod 1751: rwxr-x--t ---> 111 101 001
[ Szerkesztve ]
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.
"ogy pl.: 2xxx - es az setUID - os.": ezt hogy hoztad össze?
a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

1) a megoldás során végig az eredeti directoryban állsz (ami a B szülője). Ezért például az E/C forma nem jó, hiszen az E a B-ben van. Tehát B/E/C formában kell rá hivatkozni. Hasonlóan a többire is.
2) az echo az nem üres fájlt hoz létre, beleír egy entert. Ha ez probléma, akkor echo -n vagy egyszerűen touch.
3) a chmod nem csak az oktális jogokat szereti, ismeri a szimbolikust is
4) az mkdir-nek egyből meg is lehet adni jogokat
Pl. mkdir -m u=rwx,g=rxs,o=rx B
Jester

Azt azért elárulhatná valaki, hogy oktális formában megadva a jogokat, a setuid, setgid biteket hogy lehet levakarni egy állományról? (nem tudom, van-e jelentősége, hogy valószínűleg könyvtár volt az áldozat)
Egy Ubuntu 9.10-en próbálkoztam és csak u-s g-s formában működött, numerikusan nem.
Lusta voltam utánanézni, hogy ez bug v. így kell működnie.
...

MOD: hm, számít, hogy könyvár
Arról nekem se szedi le.
man chmod:
chmod preserves a directory's set-user-ID and set-group-ID bits unless you explicitly specify otherwise. You can set or clear the bits with symbolic modes like u+s and g-s, and you can set (but not clear) the bits with a numeric mode.
[ Szerkesztve ]
Jester

Sejtem már... azon a nyomorult Ubin van valami apparmor vagy miatúró... Nem ismerem, nem tudom, pontosan mit csinál, de könnyen lehet, hogy az pofázott bele az életembe.
Egy biztos, linuxos (Tomato) routeren, rootként működik:
root@router:/tmp/home/root# mkdir x
root@router:/tmp/home/root# chmod 6777 x
root@router:/tmp/home/root# ls -l
drwsrwsrwx 2 root root 40 Mar 27 15:14 x
root@router:/tmp/home/root# chmod 0777 x
root@router:/tmp/home/root# ls -l
drwxrwxrwx 2 root root 40 Mar 27 15:14 x
[ Szerkesztve ]
...

Nem nyert. A debianomon nincs ilyesmi, mégsem működik. Najó, akkor következik valami doksi olvasás, hátha kiderül...
...

Szerkesztettem az #578-at 
Jester
még mindig firtatnám azt a kérdést, hogyha te a hsz-edben megírod, hogy 2xxx az setGID, akkor ő hogy hozza össze belőle, hogy setuid...
a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

Szerencsére én is belenéztem a man-ba: korábban a sticky bit kapcsán hülyeséget írtam. A memóriából eltávolítható a program, a swap-ből nem engedi törölni.
...

Úgy, ahogy én is szoktam: figyelmetlen. 
...
Így van, kicsit siettem, aztán azért írtam el. Setgid - et akartam írni. 
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.
Kezdek bele keveredni.
Akkor így lesz:
mkdir B; chmod 2755 B
mkdir B/E; chmod 1751 B/E
echo > B/E/C; chmod 640 B/E/C
ln B/E/C B/D
ln -s D B/A
Ha így sem jó, akkor tényleg nem tudom hogy lesz. 
"Nagy-Magyarország te sosem maradsz árva, mindig szívünkben élsz, szeretetbe zárva" - EF.

Kérdésem lenne, hogyan tudom egy fájl tartalmát egy csv megadott oszlopába megadott helytől kezdődően exportálni.
Úgy szeretném, hogy minden sor külön cellába legyen.
Minőségi laptopok http://www.laptop-ok.hu
lenne egy nem túl bonyolult problémám, valszeg egyetlen ciklussal (ügyesebbeknek egy sorral) is megoldható, csak én lusta vagyok 
szóval van egy könyvtár, abban képfile-ok. IMG_xxxx.JPG a nevük, az xxxx egy sorszám. ezeket kellene átnevezni kep_yymmddxx.jpg-re, ahol az yy az év, a mm a hónap, dd a nap, xx meg egy sorszám 01-től. a dátum a létrehozás, vagy az utolsó módosítás dátuma, nem az aktuális.
ez olyan, mint a görögtűz, csak görögvíz - Loretto
Total Commander, file, csoportos átnevezés.
MCSE+M/S, MCITP, VCP5 - ''Soha ne becsüld le az autópályán száguldó DAT kazettákkal megrakott teherautó sávszélességét''
azert ne ajanljunk mar windowsos programot ebben a topicban 
foleg hogy van nativ megoldas, pl. Krename
"egy felugró ablak kiírja, hogy pop-up blockert installáltam"
köszi, megoldottam ezzel. bár kicsit sokat kellett kattingatnom, mire úgy csinálta meg, ahogy akartam 
ez olyan, mint a görögtűz, csak görögvíz - Loretto
Problémára keresünk megoldást, pl az ilyen átnevezéshez szerintem 100x jobb a TC mint scriptekkel matatni 
MCSE+M/S, MCITP, VCP5 - ''Soha ne becsüld le az autópályán száguldó DAT kazettákkal megrakott teherautó sávszélességét''

Nade egy unix-linux rendszeren annyira nem jellemző a TC. 
...
A shell script lehet powershell is 
MCSE+M/S, MCITP, VCP5 - ''Soha ne becsüld le az autópályán száguldó DAT kazettákkal megrakott teherautó sávszélességét''

Ez igaz. 
...

Akarok egy scripteket elindító scriptet írni. Hogy lehetséges az, hogy csak akkor induljon el a következő, ha az előző sikeresen lefutott?
A következő elgondolás jó?
./usr/.../script1 && ./usr/.../script2 && ./usr/.../script3
& kapcsolatnál ha minden igaz, akkor csak akkor megy tovább amikor az előtte levő sikeresen lefutott igaz?
Vagy más megoldás kellene ?
másik kérdésem, a keletkezett fájlt hogy tudom emailban elküldeni? mert valamiért nem akar eljönni, a mail -s "tárgy" uuencode fájlnév email címmel 
Minőségi laptopok http://www.laptop-ok.hu
"& kapcsolatnál ha minden igaz, akkor csak akkor megy tovább amikor az előtte levő sikeresen lefutott igaz?"
Egeszen pontosan csak akkor, ha az elozo parancs exit levelje 0 volt. Az osi unixos szokas, hogy ha rendben lefut, akkor ez nulla, ha meg nem, akkor nem nulla, viszont pl. a sajat scripteknel figyelned kell erre (a shell scriptek a legutolso futtatott parancs exit leveljet kapjak meg, es ha pl. ez egy echo "hiba tortent" (ami persze szepen le fog futni es 0-t ad vissza), akkor utana be kell raknod pl. egy exit 1 utasitast). Egyebkent teljesen jol hasznalhato konstrukcio, pl. az unzip x.zip && rm x.zip az egyik kedvencem 
A levelezeshez meg vmi olyasmi kellene, hogy uuencode file.bin | mail -s subject akarki@akarhol.org
[ Szerkesztve ]
Falsus in uno, falsus in omnibus.

Sziasztok !
lenne egy kérésem egy feladatot illetően...
Feladat a következő:
Scriptet kell létrehozni, amely user-eket hoz létre, úgy nézzen ki, hogy tetszőleges számú usert hozzon létre, törölni is tudja az usereket, fájlból vegye az új usereket ( ezt nem tudom mit jelenet ), fájlban valódi név is legyen, hibák kezelése, kiírása, vagy más paramétereket is kiírhat. ( pl. Kati - Kiss Katalin )
Ezt valaki leírná ez elejétől, pontról-pontra ?
Szeretem én a linuxot, csak ne bonyolódjak bele... 
Nem tudom számít-e, de Debiánt használunk..

Sziasztok
Egy olyan kérdésem lenne hogy a feladatom egy olyan szkript írása ami egy fájlt vár bemenetként.Ezt hogy tudom elérni?És hogy soronként olvassa ezt?Getline-al vagy hogyan?
Előre is köszi.
üdv bolvar
cat $1 | while read line; do
echo $line
done
A fájl soronkénti feldolgozása kb ennyi.
Az meg, hogy fájl-e a $1 paraméter például:
if [ -t $1 ]; then
echo "Yes it is"
fi
Sianis
[ Szerkesztve ]
"Mo-mo-mo-move your legs like a monkey man"