Szkriptek: Python, Perl, Bash, ...

[MEGOLDVA] Quota tobb gepen mas diszkre

Adott egy bash script ami automatikusan allit be a felhasznaloknak hozzaferest quotaval egyutt. Ez a script tobb gepen is fut, de az egyik gepen a kerdeses konyvtar a /dev/sda1 -en van, a masik gepen pedig a /dev/sdc2-n. Azt szeretnem elerni, hogy a scriptnek vagy a quotanak ne kelljen megmondani hogy melyik disken van az adott konyvtar hanem automatikusan ismerje fel, es annak megfeleloen allitsa be. Mar az is eleg ha valamivel le tudnam kerdezni hogy amelyik konyvtarban eppen vagyok az melyik disk melyik particiojan van, mert akkor ezt at tudom adni a quotatoolnak. Szinte biztos, hogy erre nagyon egyszeru mod van, de nem jottem ra.

egyforma sorok megszamolasa

Sziasztok!

Segitseget szeretnek kerni toletek. Bash scriptben nem tudom megoldani azt, hogy ha van egy ilyen inputom:

2011-10-20 13:57:35
2011-10-20 13:57:35
2011-10-20 13:57:35
2011-10-20 13:57:35
2011-10-20 13:57:35
2011-10-20 13:57:35
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:36
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37
2011-10-20 13:57:37

Akkor megszamoljam kulon kulon, hogy mennyi van a 35, 36, 37 vegubol. Van erre estleg valami otletetek?

koszi&udv,
Tibi

bash vs. dash és egyéb shell script problémák

Lehet hogy ez Debian Squeeze specifikus, de lehet hogy mások is beleszaladnak.
1. script1 -ből szeretnék lefuttatni egy másik script2 -őt úgy, hogy a script2 -ben definiált és értéket kepott változókat megkapja a script1. A bash erre a "source ./script2" használja, de mit használhatok dash -ban?
Debian Squeeze -ben /bin/sh -> /bin/dash. Belenéztem az /etc/init.d scriptekbe, ott pl. a következő (számomra új) érdekes szintaxist találtam:


if [ -f /lib/lsb/init-functions ]; then
  . /lib/lsb/init-functions
else
  # itt már semmi különös
fi

2. Próbálom összerakni a dash - bash különbségeket (a bash memória és terület igénye a sokszorosa a dash -nak, úgy gondolom érdemes vele foglalkozni) és találtam egy ilyet
http://princessleia.com/plug/2008-JP_bash_vs_dash.pdf
A 14-ik oldalon a "for" ciklus és a dash/bash beépített aritmetikai képességei kapcsán van egy "bonyolult" példa program:


i=0
while ($i < 3)
do
  ...
  ((i++))
done

Na ez csak hibaüzeneteket generál, ráadásul a shell scripteknek megfelelően eléggé homályosat:
./prb-loop.sh: 12: cannot open 3: No such a file

Ez most mi lehet?

3. Arra gondoltam, jó lenne tudni (esetleg kellhet) hogy milyen shell -t is alkalmazok amikor futtatom a scriptemet. Nosza betettem:
echo "using shell = $SHELL"

No ez mindig azt írja hogy /bin/bash, tekintet nélkül, mit írok a script "fejlécébe" #! /bin/sh vagy /bin/bash és /bin/dash
Most ez egy hiba? - környezeti változó van rosszul beállítva.

Szerkesztve:
Kipróbáltam a $help parancsot - erre azt köpte ki, hogy "GNU bash, version 4.1.5(1)-release (x86-pc-linux-gnu)". Kezdek teljesen összezavarodni - a /bin/sh - a /bin/dash -ra mutat, így ha a shell script úgy indít hogy #! /bin/sh a dash fogja végrehajtani - a tudományából ítélve is. A drága jó Debian csak a felhasználót sz'vatja, az alap shell az a bash? Mire jó ez?

Szerkesztve:
Akkor most lehet, hogy az init scripteket is valójában a bash futtatja?

meldbedobás

Gyakran használom a meld nevű fájlösszehasonlító programot. Nagy fájlokkal azonban nehezen/lassan birkózik meg. Olyan szkriptre vágynék, amely összehasonlítana egy A és egy B fájlt, és ezekből legyártana egy /tmp/A és /tmp/B fájl oly módon, hogy a /tmp-beli fájlok csak az A és B eltérő sorait (és még fölöttük-alattuk egy-egy sort) tartalmaznák. Így ezeket át lehetne adni a meldnek.

PyContest 2005 feladat perl-ben

szöget ütött a fejembe ez a téma.

aki nem érti, de véletlenül épp érdekelné, hogy mit makogok: a feladat - ha jól értettem végül - olyan függvény írása minél kevesebb karakterrel, ami tetszőleges pozitív egész számot ha kap, cserébe számológép style-ban mutatja a számjegyeket.

pl.: w(42);

kimenet:

    _ 
|_| _|
  ||_ 

sub w{@p=split'',$_[0];@n=split',',"   , _ , _|,|_ ,|_|,  |,| |";%m=split',',"0,164,1,055,2,123,3,122,4,045,5,132,6,134,7,155,8,144,9,142";for($i=0;$i<3;$i++){print$n[substr$m{$_},$i,1]foreach@p;print$/;}}

ez eddig 205 karakter.

kikuchiyo megoldása:


use 5.010;sub w{for$;(0..2){$_=$_[0];s!(\d)!('    _  _||_ |_|  || |'=~/.../g)[('164055123122045132134155144142'=~/./g)[$;+$1*3]]!ge;say}}

127 (+10) karakter

az eredeti feladat megoldása itt

bárki ne habozzon mondani, ha eszébe jut még valami ezzel kapcsolatban, bár ez már így is elég perverz, ahogy elnézem. sebaj. szeretem a nagy felhajtást, arról nem is beszélve, hogy ebből mennyit lehet tanulni. :)

én például megtanultam többek között azt, hogy a $/ speciális változó alapértelmezett értéke a \n, hogy lehet intervallumot megadni for loop-nak, hogy majdnem bárhol el lehet hagyni a szóközöket, illetve hogy hogyan lehet speciális változót hanyag eleganciával és ötletességgel ciklusváltozónak használni.

Fura ssh hiba / ssh_askpass

Sziasztok,

egy altiris nevezetu symantec gyartasu, deployment szoftverrel dolgozunk. Nagyon egyszeruen osszefoglalva, az altiris szerveren futo install scripteket, jobokat, telepiteseket centralizalva kezelhetjuk az altiris agentel rendelkezo hostokon.
A problema ott kezodidk hogy az egesz cucc win szerveren fut, es az egesz rendszer win-re lett kitalalva, a linux vendegeket mar problemasabbak vele kezelni, de mondjuk elvileg megy.

Adott egy tok egyszeru telepitesi szkript, ami az altiris szerveren inditva a linux gepekre (amin fut az agent) kulonbozo csomagokat telepitenk, kb igy :

1, mkdir software_folder
2, chown user.user -R sofware_folder
3, scp -r remote_host:/folder /apps/sofware_folder

az autentikaciot egy kulon gui-s file-ban be kell allitani az altiris szerveren.

Az elso ket parancs, szepen lefut, tehat a kapcsolat es az autentikacio letrejon!!!!

a 3. parancs szall el a kovetkezo hibaval:

ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory

ezt megguglizva, mindenfele osx meg x11-es hibakat kapok, pedig ez egy rhel szerver, gui nelkul.

Persze az altirissal megha nem is talalkoztatok, ez a hiba uzi mi lehet?

koszi

string utolsó részének törlése

Hellosztok!

Olyan gondom akadt saját bash szkriptem írása közben, hogy vannak stringek, pl:

"/valami/akarmi/stb"
"valami2/akarmi2/ezisstb"

és még ilyenek.

Azt szeretném valahogy elérni, hogy az utolsó '/' utáni részt levágná, legjobb az lenne ha az utolsó '/' is repülne.

Pl a fenti stringekből ez lenne:

"/valami/akarmi"
"valami2/akarmi2"

(Én sed fele kacsingattam, de nem találtam megoldást a problémámra)

Ezt hogy lehetne elérni?

Hol is van a futó script?

Megint találtam valami furaságot. Adva van egy script:
/home/bubu/wkrx/proba-10/ipiapacs.sh

Csinálok hozzá egy symlinket a /home/bubu/bin könyvtárban:
/home/bubu/bin/ezaz -> /home/bubu/wkrx/proba-10/ipiapacs.sh

Mikor elindul a script, tudnom kéne pontosan hol is van, nosza $PWD
PWD = /home/bubu

ajaj, mit mond a $0
/home/bubu/bin/ezaz

Valójában pedig a /home/bubu/wkrx/proba-10/ipiapacs.sh fut.
Hogy lehet ezt az infót kinyerni a scriptben?

Iwiw képfeltöltés probléma

Sziasztok!
A problémám a következő: Az iwiwen linux alól nem lehet feltölteni nagybetűs kiterjesztésű képeket. Kisbetűset igen. Itt a probléma forrása: http://pastebin.com/JZGf819f Ehhez kéne beszúrni a *.JPG sort. Ezt Chrom(e/ium)-ban viszonylag egyszerű, csak fárasztó minden egyes alkalommal (persze ott lenne a lehetőség, hogy nevezzem át a képeim, de mivel a fényképezőm nagybetűvel menti, és nincs kedvem folyton átnevezgetni...).
A kérdés: Hogyan lehet valami olyan kis scriptet csinálni, ami minden egyes alkalommal kiegészíti ezt a sort a szükséges plusszal?

uniq hiba?

Ebben a fájlban (kitömörítés után) elvileg minden sor egyedi: http://web2.osb.hu/z/nincsismetles.txt.bz2
Mégis, a uniq -d több ismételt sorra utal: sort nincsismetles.txt |uniq -d|wc -l
1960

Ha kilistázom a találatokat és rákeresek bármelyikre, akkor csak egy sor adódik. Pl.:
sort nincsismetles.txt |uniq -d|tail -n 9|head -n 1
ZZSZSSPKKPKP
grep ZZSZSSPKKPKP nincsismetles.txt
ZZSZSSPKKPKP

Mitől lehet ez?