tomykav 0 Share Posted November 17, 2005 Hali! Lenne egy kérdésem Bash Script-tel kapcsolatban. Meg kellene néznem egy távoli gépen, hogy nyitva van-e a 139-es portja (nem hackerkedés, hanem felügyelet céljából). Én írtam rá egy kis gagyi programocskát, de nem lett az igazi: #!/bin/bash if [ `nmap $1 | grep "netbios-ssn" | sed 's/\ /_/g'` == "139/tcp__open__netbios-ssn" ]; then echo "A 139-es port nyitva"; exit 0; else echo "A 139-es port zárva"; exit 2; fi Mûködik, de valami komolyabb kellene, de más módszer nem jut eszembe. Tudnátok segíteni? Link to comment Share on other sites More sharing options...
Greene 12 Share Posted November 17, 2005 Na most gondban vagyok. Egyrészt ilyen mélységekig sose mentem bele a scriptelésbe. Másrészt vajon ez a téma inkább linux, vagy inkább programozás? Egyelõre marad itt, majd beszélek tzolival. Link to comment Share on other sites More sharing options...
tomykav 0 Author Share Posted November 18, 2005 Én is sokat gondolkodtam, hogy hol tegyem fel a kérdést. De ha nem jó helyen van, akkor tedd át. Köszi Link to comment Share on other sites More sharing options...
aty 0 Share Posted November 18, 2005 Minek erre script?! Ráadásul amit írtál végignézi az összes portot és rettenetes lassú. nmap -p 139 hostnev - Sokkal egyszerûbb megoldás. Esetleg nmap -p 139 hostnev | grep open Ebben az esetben ha nincs kimenet akkor zárva van, ha van akkor open. Link to comment Share on other sites More sharing options...
tomykav 0 Author Share Posted November 18, 2005 A script azért kell, mert nem én nézem a kimenetet, hanem egy Nagios nevû felügyeleti rendszer. A scriptet minden ellenõrzéskor lefuttatja, és a script által generált visszatérési értéket feldolgozza a rendszer. Majd pedig értesítést küld az illetékeseknek, ha a port nincs nyitva. Tehát azért van szükségem a scriptre, hogy visszatérési értéket adjon át, mert a felügyeleti rendszer csak azzal tud valamit is kezdeni. Egyébként a tippet köszönöm, majd kipróbálom. Link to comment Share on other sites More sharing options...
aty 0 Share Posted November 18, 2005 Nah akkor valahogy így: #!/bin/bash if [ "`nmap -p 80 $1 | grep open`" != "$NULL" ]; then echo "A 139-es port nyitva"; exit 0; else echo "A 139-es port zárva"; exit 2; fi Jó kis küzdelem volt addig, amíg kiderült hogy az utasítás köré a `-on kívûl kell egy idézõjel is ebben az esetben:) Link to comment Share on other sites More sharing options...
tomykav 0 Author Share Posted November 18, 2005 Nagyon szépen köszönöm a fáradozásaidat! Tényleg hatékonyabbnak tûnik az enyémnél! Link to comment Share on other sites More sharing options...
aty 0 Share Posted November 18, 2005 Jah -p 139 kell bocs. Http szerverekkel teszteltem, azért volt 80. Link to comment Share on other sites More sharing options...
Kovács Dávid ( Davs ) 0 Share Posted January 17, 2006 Hy! Kerestem ezt a topicot, mert biztos, hogy létezett, de nem találtam Nah mindegy, akkor felteszem ide a jókora "kérdéscsomagomat" A múlt héten ( vagy azelõtt ) voltam MO-n, és vettem egy könyvet: Pere László : Linux felhasználói ismeretek. Ebbõl tanulgattam a Linux alatti Bash scriptelés alapjait, de pár dolog nem világos: íl: az export mire való ? íl: a local mire való ? íl: A for ciklus nem vili. PHP alatt pl. for($i=0;i<15;$i++). Ez világos. De itt ezt a fajtát kell használni: for v in k; do mag done Ezt elmagyarázná nekem valaki? Fõleg a v és a k kapcsolatát. Link to comment Share on other sites More sharing options...
tomykav 0 Author Share Posted January 17, 2006 A v és a k kapcsolatát egy példán mutatnám meg: pl.: for i in "a b c d e"; do echo $i; done Az i változó felveszi az idézõjelbe tett adatokat. Tehát ennek a kimenete a b c d e lesz. A "k" helyére lehet betenni parancsokat is az altgr+7 (``) idézõjelek közé. Mondjuk van egy matrix.dat állományod a következõ tartalommal: 1 2 3 4 5 6 7 8 9 akkor a mátrix elemeit fogja felvenni az i változó a következõ kódban: for i in `cat matrix.dat`; do echo $i; done Remélem érthetõ volt. Egyébként C szintaxissal is lehet ciklust írni bash-ben, de nem szoktam használni, és nem tudom, hogyan mûködik. Link to comment Share on other sites More sharing options...
Kovács Dávid ( Davs ) 0 Share Posted January 18, 2006 Hy! Úgy ahogy átjott. Hoppá nem megy az ALT + szám! Nem tudok ékezetes betut írni! Bocs, valamit kitalálok. Csak már végre Linux alól nyomom Link to comment Share on other sites More sharing options...
szakos 0 Share Posted April 5, 2007 Helló! Abszolút kezdõ vagyok linuxban, de ahova járok suliba elég komolyan veszik ezt! Kaptunk egy feladatot, amit be kell hamarosan adnunk, de igazából nem tudom, hogy kezdjek hozzá! Odáig megy, hogy w vagy who am i parancsokat kell használni, de nem nagyon értem, hogyan! Ha esetleg tudna segíteni, annak elõre is köszi! Ákos Itt a feladat: p l (process list) A paraméterben megadott felhasználó processzeirõl ír ki információkat. Ha nem adunk meg felhasználót, akkor a script-et futtató felhasználóról adunk adatokat. Amit ki kell írni: process ID, CPU-idõ százalékban és a parancs neve. Az adatokat a CPU-idõ szerinti növekvõ sorrendben kell kilistázni. Egy külön kapcsolóval a programot interaktívvá lehet tenni, vagyis x másodpercenként újra megvizsgálja a processzeket és kiírja, mindezt addig teszi, míg le nem nyomjuk a Ctrl+C-t. //Program része kell legyen a paraméterek lekezelése és a //segítségkérés (pl. „-?” kapcsolóval). Rossz használat esetén szintén egy rövid //használati segédlet jelenjen meg. Link to comment Share on other sites More sharing options...
Greene 12 Share Posted April 5, 2007 Ez a kód 5 másodpercenként lefuttatja a hátultesztelős ciklust, amiből CTRL+C-vel léphetsz ki #!/bin/bash while : do clear parancs1 parancs2 ... sleep 5 done Ez pedig -t és -r opciókat vár while getopts t:r: MYOPTION do case MYOPTION in t) RESTAURANTTYPE=$OPTARG;; r) RATING=$$OPTARG;; \?) echo "Sorry no such option, please try again" exit 1 ;; done Sajnos Bashben nem használtam még argumentumokat, csak Perlben és PHP-ban. Kiindulásnak ez jó lesz. Linux alatt a "ps" parancs opcióit nézd meg ("man ps"). Esetleg jó ötlet lehet egyszerűbb parancsokat megnézni a /bin könyvtárban vagy a /sbin-ben, mert sok parancs nem más mint egy bash script, ami mindenféle opciókat vár. Továbbá nézd meg a "top" parancsot, mert az azt tudja amit te szeretnél, csak komolyabb Link to comment Share on other sites More sharing options...
szakos 0 Share Posted April 7, 2007 Köszi a segítséget! Link to comment Share on other sites More sharing options...
diebold 0 Share Posted October 27, 2007 Sziasztok. Kéne egy kis help. Na szóval olyan bash filet akarnék írni ami: Akárhány bemenettel meghívható( de csak fileokkal, különben hibát dob ki és exit 1-el ki is lép ), de minimum egy fileval meg legyen hívva kül szintén kilép exit 1-el. A lényege a filenak (ami nem megy), hogy a bemeneten kapott fileokat egyesével megnyitva azok sorai elé sorrol sorra generál egy random számot ( a $RANDOM parancsal ), majd már csak sorbarendezve véletlen sorronkénti rendezést csinál a sorokon. Lefordítva a fileok tartalmát soraik szerint random összekeveri. Na ha valaki kisegítene akkor nagyon boldog lennék. Csak az kéne ami egyesével minden sor elé generál egy véletlen számot. Elõre is köszike Link to comment Share on other sites More sharing options...
Aglaia 0 Share Posted September 18, 2008 Sziasztok! Van itt még valaki? Kellene egy kis segítség, mivel nem régen kezdtem el linux-szal foglalkozni. Szóval írtam egy scriptet, amit idõzítve szeretnék futtatni. Az ndsrepair parancsot tartalmazza csak. A problémám az, hogy ha kézzel adom ki a parancsot egy terminálban, akkor szépen lefut, ha viszont a scriptet indítom, akkor csak az elsõ sort írja ki, a DS száma már a végérõl hiányzik. Tudna valaki hozzászólni ehhez? Mi lehet a gond? Link to comment Share on other sites More sharing options...
Gereby 0 Share Posted September 22, 2008 Futtasd cronnal. Link to comment Share on other sites More sharing options...
Black_Adder 0 Share Posted May 7, 2010 Sziasztok. Egy kis segítséget krnék pár feladatban. Ezek házik voltak, de a beadási határidelyük már lejárt, csak nem tudtam megcsinálni. Ha valaki tudna egy gazdagon commentelt megoldással szolgálni valamelyik feladat(ok)ra, az nagyon nagy segítség lenne: Felh. kezelés: 1.) Készítsen egy Bash scriptet, ami fogad egy felhasználó és hozzárendelt könyvtár listát CSV formátumban, létrehozza a felhasználókat és a könyvtárakat és beállítja a jogosultságokat úgy, hogy minden felhasználó be tudjon lépni, olvasni és írni is tudjon a hozzárendelt összes könyvtárban, de ne tudjon belépni egyéb könyvtárakba, amikhez nem volt hozzárendelve. Egy felhasználó több könyvtárhoz és is lehet rendelve és egy könyvtárhoz is több felhasználó lehet rendelve. Posix ACL-eket nem használhat, viszont szükség esetén létrehozhat új csoportokat. Ha a rendszeren meglévõ felhasználót talál, azt ne módosítsa, hagyja ki teljesen! Feltételezhet angol locale beállítást. A bemenetet a következõ formátumban kapja meg: konyvtar1:usernev1 konyvtar1:usernev2 konyvtar2:usernev2 2.) Készítsen egy Bash scriptet, ami paraméterként egy CSV fájl teljes elérési útját várja, majd létrehozza az ebben definiált felhasználókat és hozzáadja a megadott csoportokhoz! A CSV fájl szerkezete: login,password,description,groups testusr1,pass$wo4ed,Teszt felhasznalo 1,wheel;csoport1 testusr2,pass$wo4ed,Teszt felhasznalo 2,csoport2 A scriptnek gondoskodnia kell arról, hogy az esetlegesen nem létezõ csoportokat létrehozza. Viszont ha a rendszeren már meglévõ felhasználót talál, akkor azt ne módosítsa! Feltételezhet angol nyelvû locale beállítást, továbbá azt, hogy a felhasználók és csoportok nevében nem lesz , ; illetve whitespace karakter. Vegyen hozzá a CSV fájlhoz még két sort, az egyikben saját magát adva meg! Konfiguráció kezelés: 1.) Készítsen olyan Bash scriptet, ami paraméterként megkapja egy CSV fájl elérési útját, majd a CSV fájlban felsorolt (<hostnév>,<usernév>,<jelszó>) gépeket sorban lekérdezi wbemclivel, majd egy HTML jelentést készít a felsorolt gépek következõ tulajdonságairól: Processzor adatai (típus, órajel, család, stepping) Alaplap adatai (típus, szériaszám) Operációs rendszer adatai (név, verzió, hosztnév) Memória mérete A HTML oldal címe computer inventory legyen. 2.) Készítsen egy olyan bash scritptet, amit egy paraméterként megkapott távoli számítógéprõl lekérdezi az ott futó folyamatokat. A paraméterezés a következõ legyen (–u és –p sorrendje felcserélhetõ, valamint ne legyen kötelezõ õket megadni): wbemps –u <username> –p <password> <hostname> A kimenet a következõ formátumú legyen: USERID PID DESCRIPTION 500 2968 sshd Elõre is köszönök minden segítséget: B Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now