Παρασκευή, 05 Σεπτεμβρίου 2008
JSR 82 Bluetooth API on NOKIA phones
Hint: If you want to keep your hair and your mind, don't use nokia phones.
Details to be released soon. (Yes I know, i owe details about my last post as well).
Δευτέρα, 16 Ιουνίου 2008
Mερικα ονόματα και νούμερα..
1μηνας, 1259 γραμμες php, 575 γραμμες javascript, 1496 γραμμες html, 3330 γραμμες κωδικα.
Kαι να δεις που ειχα την εντυπωση οτι ειμαι ενεργειακος....
*project details to be posted soon.
Παρασκευή, 01 Φεβρουαρίου 2008
Δημιουργία .deb πακετων απο πηγαιο κωδικα
Για να δημιουργήσουμε ενα deb πακετο θα χρειαστουμε τον πηγαιο κωδικα , συνηθως σε μορφη tar.gz και ορισμενα εργαλεια που μας παρεχει το debian , συγκεκριμενα τα πακετα build-essential, dh-make, debhelper, devscripts, fakeroot.
# aptitude install build-essential dh-make debhelper devscripts fakeroot
Στο συγκεκριμενο παραδειγμα θα δημιουργησουμε deb για το dbhub-0.450.
Οποτε κατεβαζουμε τον πηγαιο κωδικα απο εδω
Δημιουργουμε το directory μεσα στο οποιο θα δουλεψουμε
$ mkdir -p ~/dbhubproject
και μεταφερουμε το tar με τον πηγαιο κωδικα εκει.
$ mv sbhub-0.450.tar.gr ~/dbhubproject
$ cd ~/dbhubproject
Αποσυμπιέζουμε
$ tar xfz dbhubproject-4.50.tar.gz
και αλλαζουμε το working directory μας στο directory dbhub-0.450 που δημιουργηθηκε.
$ cd dbhub-0.450/
Tωρα χρησιμοποιούμε το dh_make ως εξης
$ dh_make -e youremal@address -f ../dbhub-0.450.tar.gz
Θα μας ρωτησει αν το πακετο μας ειναι single binary, multiple binary κ.ο.κ .To dbhub περιεχει μονο ενα εκτελεσιμο αρχειο οποτε διαλεγουμε την πρωτη επιλογη και παταμε enter. Mε την εκτελεση του dh_make θα δημιουργηθει στο dir superproject ενα αντιγραφο του πηγαιου κωδικα της μορφης dbhub_0.450.orig.tar.gz ενω στο WD μας θα δημιοργηθει ενα directory debian.
Mεσα στο dir debian/ υπαρχουν τωρα τα εξης αρχεια και φακελοι:
changelog dbhub.doc-base.EX init.d.ex postrm.ex
compat dirs manpage.1.ex preinst.ex README.Debian
control docs manpage.sgml.ex prerm.ex
copyright emacsen-install.ex manpage.xml.ex
cron.d.ex emacsen-remove.ex menu.ex rules
dbhub-default.ex emacsen-startup.ex postinst.ex watch.ex
Ας δουμε τωρα τι ειναι το καθε αρχειο, αρχιζοντας με αυτα που χρειαζονται τροποποιησεις
Το αρχειο control αυτο χρησιμοποιειται απο προγραμματα οπως το dselect και το dpkg και αλλα εργαλεια του διαχειριστη πακετων της διανομης μας.
Η τυπικη μορφη του ειναι η ακολουθη
Source:
Section:
Priority:
Maintainer:
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2
Package:
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description:
Στη γραμμη 1 ειναι το ονομα του πακετου του πηγαιου κωδικα.
Στη γραμμη 2 η κατηγορια της διανομης στην οποια υπαγεται το πακετο . To debian χωριζεται σε 3 κυριες κατηγοριες
main (ελευθερο λογισμικο)
non-free (μη ελευθερο λογισμικο)
contrib (ελευθερο λογισμικο το οποιο εξαρταται απο μη ελευθερο)
Κατω απο αυτες υπαρχουν πολλες υποκατηγοριες αναλογα με το ειδος του πακετου πχ admin, base, net, x11.
To main/ εννοειται αν δεν βαλουμε κατι , οποτε ας βαλουμε net το οποιο υποδηλωνει main/net
Στην γραμμη 3 δηλώνουμε ποοσ σημαντικο ειναι για τον χρηστη να εγκαταστησει το πακετο. Το optional ειναι μια καλη επιλογη για το πακετο μας.
Στην γραμη 4 συμπληρωνουμε το ονομα και τη διευθυνση e-mail του maintainer(δηλαδη στην περιπτωση μας το δικο μας:)).
Στην γραμμη 5 δηλωνονται τα πακετα που ειναι απαραιτητα για τη μεταγλλωτιση και εγκατασταση του πακετου. Αν εχουμε το πακετο ηδη εγκατεστημενο, μπορουμε να βρουμε τις εξαρτησεις αυτες ως εξης
$ objdump -p /usr/bin/superproject | grep NEEDED
και για καθε βιβλιοθηκη που θα μας δωσει το οutput εκτελουμε την εντολη
$ dpkg -S libname
Παιρνουμε την -dev εκδοση καθε πακετου που μας επιστρεφει και ετσι βρισκουμε τις απαραιτητες εξαρτησεις.
Στη γραμμη 6 ειναι η εκδοση του Debian Policy που ακολουθει το πακετο
Στη γραμμη 8 ειναι το ονομα του πακετου το οποιο ειναι συνηθως (αλλα οχι απαραιτητα ) το ιδιο με το ονομα του πηγαιου κωδικα.
Στη γραμμη 9 περιγραφεται η αρχιτεκτονικη του επεξεργαστη στον οποιο το πακετο μας μπορει να εγκατασταθει.Το αφηνουμε στο any και αναλαμβανει το dpkg-gencontrol να δωσει την απαιτουμενη τιμη σε καθε υπολογιστη στον οποιον μεταγλωτιζεται το πακετο.
Στη γραμμη 10 εχουμε τις εξαρτησεις οι οποιες λαμβανονται υποψιν απο το διαχειριστή πακετων της διανομης μας.
Μπορουμε να εχουμε τα πεδια
Depends: Πακετα χωρις τα οποια δε θα εγκατασταθει το πακετο μας
Recommends: Το aptitude πχ θα μας πρoτινει να εγκαταστησουμε και αυτα τα πακετα κατα την εγκατασταση του πακετου μας
Suggests: Πακετα με τα οποια συνεργαζεται καλα το πακετο μας
Pre-Depends:
Conflicts:
Provides:
Replaces:
Για το Depends μπορουμε να χρησιμοποιησουμε το ${shlibs:Depends}. Ετσι κατα τη διαρκει της προσωρινης εγκαταστασης για να δημιουργηθει το πακετο μας, το dh_shlibdeps θα βρει τις εξαρτησεις των shared libraries και to dh_controlgen θα τις βαλει στο απαραιτητο πεδιο.
Στη γραμμη 11 εχουμε μια συντομη περιγραφη ενω στην γραμμη 12 αρχιζει η εκτενης περιγραφη(μια παραγραφος συνηθως με περισσοτερες λεπτομερειες για το πακετο μας.
Μετα την επεξεργασια το control file μας θα ειναι καπως ετσι
Source: dbhub
Section: net
Priority: optional
Maintainer: John Kakavas
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2
Package: dbhub
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: A Direct Connect hub for Linux/Unix
dbhub is a direct connect hub for Linux/Unix originated from the opendchub.
Το επομενο αρχειο που θα εξετασουμε ειναι το copyright.
Aς δουμε αυτο που εχει δημιουργησει το dh_make
This package was debianized by your name on
Wed, 30 Jan 1008 11:42:16 +0200.
It was downloaded from
Upstream Author(s):
Copyright:
Συμπληρωνουμε το site απο οπου κατεβασαμε τον πηγαιο κωδικα και το ονομα του δημιουργου καθως και το copyright και την αδεια με την οποια το δημοσιευσε. Η αδεια πρεπει να αναφερεται ολοκληρη εκτος και αν ειναι καποια απο τις κοινες οπως GNU GPL, LGPL κλπ οποτε μπορουμε να παραπεμψουμε στο dir /usr/share/common-licenses/ Mετα τις αλλαγες το αρχειο copyright ειναι καπως ετσι
This package was debianized by John Kakavas
Fri, 25 Jan 2008 13:56:39 +0200.
It was downloaded from http://www.dbhub.org/
Upstream Author: Centurion (DB Hub)
DarKRaver (since DB Hub 0.450)
Jonatan Nilson
License:
GNU GENERAL PUBLIC LICENSE
The Debian packaging is (C) 2008, John Kakavas
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
Το αρχειο changelog ειναι ενα αρχειο με καθορισμενη μορφη που περιγραφεται στο Debian Policy. Χρησιμοποιειται απο το dpkg για να βρει την εκδοση του προγραμματος, τη διανομη για την οποια προοριζεται και τη σπουδαιοτητα του release αυτου.
To προτυπο που φτιαχνει το dh_make μοιαζει καπως ετσι
dbhub (0.450-1) testing; urgency=low
* Initial release (Closes: #nnnn)
-- John Kakavas
Στην πρωτη γραμμη δηλωνεται το ονομα του πακετου και η εκδοση του, η διανομη και η αναγκαιοτητα. Στην τριτη γραμμη αναγραφουμε τι αλλαγες καναμε στο πακετο και ποια η χρησιμοτητα τους., ενω στην 5 γραμμη το ονομα, το email και την ημερομηνια. Μετα τθς απαραιτητες τροποποιησεις το αρχειο μας γίνεται :
dbhub (0.450-1) testing; urgency=low
* Initial release.
-- John Kakavas
Το αρχειο rules περιεχει εντολες για τον compiler, ειναι σαν ενα Μakefile. Eιναι out of scope του συγκεκριμενου αρθρου να εξηγησουμε περαιτερω, καθως αν ο πηγαιος κωδικας μας εχει configure script( οπως συμβαινει στην περιπτωση μας) δε θα χρειαστει να κανουμε αλλαγες στο αρχειο rules.
Περναμε στο readme.DEBIAΝ. Στο αρχειο αυτο θα πρεπει να περιγραψουμε διαφορες μεταξυ του αρχικου πακετου του πηγαιου κωδικα και της debian εκδοχης του.
Στο αρχειο conffiles μπορουμε να αναφερουμε τo full path για ολα τα αρχεια παραμετροποιησης του πακετου μας, ωστε να μπορει ο packet manager μας να τα διαχειριζεται , πχ να τα διαγραφει οταν εκτελουμε aptitude remove – - purge η να μας ρωταει για την ανανεωση τους οταν κανουμε upgrade το πακετο μας.
Στο αρχειο cron.d.ex αναφερονται αν χρειαζονται προκαθορισμενες λειτουργιες που πρεπει να γινουν για να δουλευει σωστα το πακετο μας. Στην περιπτωση μας δεν χρειαζεται οποτε μπορουμε να το διαγραψουμε.
To αρχειο emacsen-.ex μπορουμε να το διαγραψουμε καθως δεν εχουμε αρχεια για emacs που θα μεταγλωτιστουν κατα την εγκατασταση του πακετου.
Ομοιως και το αρχειο init.d.ex το οποιο θα χρησιμοποιουσαμε αν το πακετο μας ηταν ενας daemon που θα επρεπε να εκτελειται στο startup του συστηματος.
Αν δεν υπαρχει man page στον πηγαιο κωδικα, θα πρεπει να δημιουργησουμε επεξεργαζομενοι καταλληλα τα manpage*.ex αρχεια .
Στο αρχειο menu δημιουργουμε ενα menu entry για τον window manager μας. To menu.ex που φτιαχνει το dh_make εχει τη μορφη
?package(dbhub):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\
title="dbhub" command="/usr/bin/dbhub"
το οποιο μετα την καταλληλη τροποποιηση γινεται
?package(dbhub):needs="wm" section="Apps/Internet"\
title="dbhub" command="/usr/bin/dbhub"
**Πρεπει να το μετονομασουμε σε menu απο menu.ex και το ιδιο ισχυει και για ολα τα .ex αρχεια που επεξεργαζομαστε.
Στο αρχειο ex.package.doc.base μπορουμε να αναφερουμε οτι αρχεια τεκμηριωσης τυγχον εχουμε για το πακετο μας εκτος απο τα manual pages μετονομαζοντας το στην περιπτωση μας πχ. σε dbhub.doc.base.
Το αρχειο watch.ex χρησιμοποιειται για την παρακολουθηση του site απο το οποιο πηραμε τον πηγαιο κωδικα (χρησιμοποιειται απο το uscan και uupdate). Στην περιπτωση μας δεν το χρειαζομαστε οποτε μπορουμε να το διαγραψουμε.
Tελος τα αρχεια postinst.ex, preinst.ex, postrm.ex, prerm.ex ονομαζονται maintainer scripts και περιγραφουν διαδικασιες που πρεπει να γινουν κατα την εγκατασταση και απεγκατασταση του πακετου μας. Διαβαζονται και εκτελολυνται απο το dpkg . Αφου αυτο ειναι το πρωτο μας πακετο, ειναι καλυτερο να μην περιπλεξουμε τα πραγματα(ετσι και αλλιως στην περιπτωση μας δε χρειαζεται) και αρα δε θα χρησιμοποιησουμε τα scripts αυτα.
Tωρα ειμαστε ετοιμοι να δημιουργησουμε το deb πακετο μας. Εκτελουμε το configure script στον φακελο του πηγαιου μας κωδικα ενεργοποιωντας τα επιθυμητα flags
Στην περιπτωση μας
$ cd ~/dbhubproject/dbhub-0.450
$ ./configure –enable-perl
και στη συνεχεια εκτελουμε την εντολη
$ dpkg-buildpackage -rfakeroot
η οποια θα μεταγλωτισει τον πηγαιο κωδικα μας και θα δημιουργησει το πακετο μας.
Αν ολα πανε καλα θα δουμε μεσα στον φακελο dbhubproject τα ακολουθα αρχεια
dbhub_0.450-1_i386.changes : Περιεχει λεπτομερειες για τις αλλαγες που καναμε στην εκδοση του πακετου μας.
dbhub_0.450-1.orig. tar.gz : Ειναι το tarball με τον πηγαιο κωδικα οπως τον κατεβασαμε
dbhub_0.450-1.dsc : Περιεχει μια περιληψη των αρχειων του πηγαιου κωδικα και δημιουργειται απο το αρχειο control.
dbhub_0.450-1_i386.deb : Το πακετο μας! Το εγκαθιστουμε με dpkg -i κανονικα οπως καθε αλλο πακετο.
Τελειωσαμε.. Η μαλλον οχι. Το οτι δημιουργηθηκε το πακετο μας δεν σημαινει απαραιτητα οτι ολα ειναι ενταξει. Θα πρεπει να ελεγξουμε αν το πακετο μας συμβαδιζει με το debian policy . Το debian μας παρεχει το καταλληλο εργαλειο το οποιο ονομαζεται lintian.Οποτε
# aptitude install lintian
και για να κανουμε τον ελεγχο εκτελουμε την εντολη
$ lintian -i dbhub_0.450-1_i386.deb
Θα μας βγαλει error η warnings αν εχουμε κανει οποιοδηποτε λαθος, η αν η δομη του πακετου μας δεν ειναι debian compliant.
Aφου ελεγξουμε με το lintian το πακετο μας, ειμαστε πλεον ετοιμοι να το μοιραστουμε.
Διαβαστε οπωσδηποτε τον επισημο οδηγο απο το debian.org
Κυριακή, 18 Νοεμβρίου 2007
DC Hub σε debian etch
Το πρωτοκολλο dc ειναι ενα απο τα πιο διαδεδομενα πρωτοκολλα για p2p transfers Περισσοτερα για το dc στη wikipedia.
Aς δουμε πως μπορουμε να στησουμε ενα dc hub σε debian.
Για αρχη χρειαζομαστε το softhub , το προγραμμα δηλαδη που θα υλοποιησει το hub μας. Χρησιμοποιω καιρο και ειμαι ικανοποιημενος σε μεγαλο βαθμο το DBHUB το οποιο ειναι ενα port του opendchub.
Θα χρειαστουμε τα πακετα της γλωσσας perl οποτε τα εγκαθιστουμε με
apt-get install perl perl-base perl-modules libperl-dev
Το κατεβαζουμε απο εδω . Μεταφερουμε το αρχειο στον φακελο που θελουμε, εστω ~/dbhub, το αποσυμπιεζουμε με
tar xvfz dbhub-0.441.tar.gz
και μπαινουμε στον φακελο που δημιουργηθηκε για να το εγκαταστησουμε
cd dbhub-0.441
Για να χρησιμοποιησουμε τα διαφορα perl scripts που υπαρχουν ετοιμα για το hub η να γραψουμε τα δικα μας, θα πρεπει να το κανουμε configure με υποστηριξη για perl. Οποτε
./configure –enable-perl && make
Αν ολα πανε καλα και δεν εχουμε errors το εγκαθιστουμε με
make install
ως root.
Ο φακελος με τα αρχεια ρυθμισεων για το hub μας βρισκεται στο ~/.dbhub , οποτε παμε εκει
cd ~/.dbhub
Στον φακελο αυτο πλεον υπαρχουν τα αρχεια
allowlist
autoaways
autofavmsg
aways
banlist
banreasons
categories
config
extra_files
hiddenlist
hubrecords
ipgaglist
ipgagreasons
lang
log
log.bz2
log.gz
logs
motd
motd_admin
motd_cheef
motd_kvip
motd_normal
motd_op
motd_prot
motd_reg
motd_vip
msgs
nickbanlist
nickbanreasons
permprot
randomwelcomes
reglist
regme
releaselist
reqlist
rrdcstats.rrd
rules
savedmsgs
scheduledmsg
scripts
seenlist
settopic
urllist
warnfile
warnings
Αυτο που μας ενδιαφερει για να κανουμε τις ρυθμισεις ειναι το config , οποτε το ανοιγουμε με τον αγαπημενο μας editor , εστω
nano config
και αλλαζουμε τις ακολουθες μεταβλητες
hub_name = "To ονομα που θελετε για το hub σας"
hub_hostname = "xxxxx.no-ip.info" Καντε εναν λογαριασμο στο no-ip η σε καποια αλλη δωρεαν υπηρεσια για να εχετε ενα σταθερο hostname να αντιστοιχει στην ip διευθυνση σας
listening_port = yyy Η πορτα στην οποια ακουει το hub , πρεπει να ειναι πανω απο την 1024 για να μπορειτε να το τρεξετε σαν απλος χρηστης.
Τωρα ειμαστε ετοιμοι να ξεκινησουμε το hub, το κανουμε απο κονσολα με την εντολη
dbhub
Την πρωτη φορα που θα το τρεξετε θα σας ζητησει το username και τον κωδικο του Owner , ο οποιος θα ειναι ο χρηστης ο οποιος θα μπορει να παραμετροποιει το hub απο τον dc client του.
Aν ολα πανε καλα θα δειτε ενα μηνυμα οτι το hub ειναι up and running και ακουει στην πορτα που ορισαμε πριν.
Συνδεομαστε λοιπον απο τον client μας , εστω το linuxdcpp στη διευθυνση xxxxx.no-ip.info:yyy
και κανουμε login με τα στοιχεια του χρηστη που δημιουργησαμε κατα την εκκινηση του hub. Απο εδω και περα ολες οι απαραιτητες ρυθμισεις μπορουν να γινουν απο τον client σε γραφικο περιβαλλον. Με την εντολη !getconfig βλεπουμε το config αρχειο και τις τιμες που εχει η καθε ματαβλητη μας , ενω για να αλλαξουμε κατι το κανουμε με !set “μεταβλητη” “τιμη”. Υπαρχει και ελληνικη μεταφραση του hub την οποια μπορειτε να βρειτε εδω
Μεταφερετε το αρχειο lang στο φακελο ~/dbhub και απο τον client σας εκτελειτε την εντολη
!reloadlang.
Aυτα για τωρα, περισσοτερες λεπτομερειες για το configuration και tips n tricks σε επομενο post.
Happy sharing :)
Τρίτη, 23 Οκτωβρίου 2007
Securing Secure Shell
Το αρχειο παραμετροποίησης του Openssh server ειναι το /etc/ssh/sshd_config
1) Protocol 2
Υποχρεώνουμε τον ssh client να συνδεθει χρησιμοποιώντας το πρωτόκολλο ssh 2
2)PermitRootLogin no
Aπενεργοποιούμε την δυνατοτητα συνδεσης ως root. Ετσι αναγκαζουμε τους επιδοξους εισβολεις να πρεπει να βρουν 1 συνδιασμο user-pass του χρηστη και επιπλέον το pass του root.
3) Port xxxx
Αλλαζουμε τη πορτα στην οποια ακουει ο sshd. Βy default ακουει στην 22, μπορουμε να την αλλαξουμε σε οποιαδήποτε non-standard πορτα. Γλυτωνουμε ετσι μερικες εκατονταδες εγγραφες στο auth.log απο script-kiddies που κανουν dictionary attacks.
4)AllowUsers myself
Αν εχουμε πολλους χρηστες στο συστημα(ακομα και αν δεν εχουμε) ,οριζουμε ποιοι χρηστες θα μπορουν να κανουν login απο ssh
5) MaxAuthTries 2
Καθοριζει ποσες αιτησεις πιστοποιησης (authentication) μπορουν να γίνουν ανα σύνδεση. Λιγη ακομα προστασια απο brute force attacks.
6) Aν συνδεόμαστε απο προκαθορισμενες ip διευθύνσεις μονο , μπορουμε να δηλωσουμε τις διευθύνσεις αυτες στο /etc/hosts.allow αποκλείοντας τις υπόλοιπες με τον εξής τρόπο : Εστω 192.168.0.5 η ip διευθυνση του host απο τον οποιο θα συνδεόμαστε
sshd: 192.168.0.5 : allow
sshd: ALL : deny
Σχολια και επιπλέον προτασεις πάντα ευπρόσδεκτα;)
Σάββατο, 20 Οκτωβρίου 2007
List clients in LAN
Δεν εχω ασχοληθει με source spoofing στο συγκεκριμενο παραδειγμα, υποθετωντας οτι το τρεχουμε σε ενα δικτυο στο οποιο ειμαστε διαχειριστες, η εχουμε τα αναλογα δικαιωματα να το τρεξουμε. Παντως θα με ενδιεφερε αν καποιος εχει αποψη στο συγκεκριμενο ...
Με ενα απλο cronjob θα μπορουσαμε να εχουμε μια εικονα χρησιμοποιησης του δικτυου ανα χ λεπτα.
#!/bin/bash
#Configuration
#
#
#Set time format
cur_time=$(date +%H:%M%t%d-%m-%Y)
#Set the network segment to scan
network='192.168.0.1/24'
#Set exluded hosts (ie routers, your sysadmin's pc ) as comma seperated values
excluded='192.168.0.1,192.168.0.2'
#Filepath for the tmp file
file='~/.hosts.tmp'
#
#
echo 'Please wait while list is being populated...'
echo ' '
nmap -sP $network --exclude $excluded | sed -n -e /^H/p | awk '{print $3}' | sed -e s/[\(\)]//g > $file
hostnum=$(wc -l $file | cut -c 1-3)
array=(`cat $file`)
echo 'There were '$hostnum' hosts oline in' $network' at '$cur_time'. They are the following'
for ((i=0 ; i<=$hostnum ; i++));
do
echo ${array[$i]}
done
rm -f $file
Οπως παντα σχολια και διορθωσεις, κατι παραπανω απο ευπροσδετα
Παρασκευή, 19 Οκτωβρίου 2007
CS Server start script
#!/bin/bash
#Configuration
directory=/home/ilektrojohn/hlds
maparray=(`ls $directory/cstrike/maps | grep .bsp |sed -e s/.bsp//g -e /ztmp/d`)
map_number=${#maparray[@]};
echo '#----------------Counterstrike Server Start Script----------------#';
echo 'Please enter your ip address: ';
read ip_addr;
if [ `echo $ip_addr |grep '[0-9]' | awk -F "." ' $1 <=255 && $2 <= 255 && $3 <= 255 && $4 <= 255 '` ]; then
echo '#Please enter the maximum number of players: #'
read max_pl
max_pl_result=` echo $max_pl | grep [a-zA-Z] `
if [ -z "$max_pl_result" ]; then
echo 'Please choose the map you want to play from the following list : '
for ((i=0 ; i <$map_number ; i++))
do
echo $i ' --- '${maparray[$i]}
done
echo ''
echo '#Your selection is [0--'$map_number'] '
read selected_map
if [ "$selected_map" > "$map_number" ]; then
echo 'Proceeding with starting your server... '
cd $directory
hlds_run -game cstrike -insecure +ip $ip_addr +maxplayers $max_pl +map ${maparray[$selected_map]} > /dev/null 2>&1 &
echo 'Server is up n running'
fi
fi
fi
btw οι γνωσεις μου για scripting ειναι περιορισμενες (φαινεται ?:P) αλλα με λιγες ωρες για καψιμο και συνδεση στο ιντερνετ γινονται πολλα.
Αν εχετε καποιο σχολιο για βελτιωση η συμπληρωση μοιραστειτε τα μαζι μου!
