Παρασκευή, 05 Σεπτεμβρίου 2008

JSR 82 Bluetooth API on NOKIA phones

It seems that deviceDiscovery method of DiscoveryListener interface uses some kind of an internal cache. I am quite sure it shouldn't. After all if you wanted to get cached devices from previous inquiries, you could(possibly should, I almost certainly would) use retrieveDevices and not start a new inquiry.

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ερικα ονόματα και νούμερα..

Zend Framework + PHP5+ Prototype + Scriptaculous + Smarty . Η πρώτη μου επαφή με OOP, κλασεις , αντικειμενα , frameworks και δεν συμμαζευεται...*

1μηνας, 1259 γραμμες php, 575 γραμμες javascript, 1496 γραμμες html, 3330 γραμμες κωδικα.

Kαι να δεις που ειχα την εντυπωση οτι ειμαι ενεργειακος....




*project details to be posted soon.

Παρασκευή, 01 Φεβρουαρίου 2008

Δημιουργία .deb πακετων απο πηγαιο κωδικα

Τα πακέτα .deb είναι πακέτα εφαρμογων που χρησιμοποιούνται απο τον διαχειριστή πακέτων του Debian και ειναι στην ουσια archives τα οποια περιχουν τα εκτελεσιμα αρχεια, τις βιβλιοθηκες και την τεκμηριωση για ενα προγραμμα η μια σουιτα σχετικων προγραμματων. Το .deb πακετο περιεχει δυο συμπιεσμενα tar archives , το ενα περιεχει τις πληροφοριες ελεγχου και το αλλο τα ιδια τα δεδομενα. Η διαχείριση των πακετων deb γινεται μεσω του προγραμματος dpkg , και συνηθως μεσω του διαχειριστη πακετων των debian-based διανομων.
Για να δημιουργήσουμε ενα 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 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

Το ssh σημαινει 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

Το παρακατω script χρησιμοποιει το nmap για να βρει τους υπολογιστες που ειναι συνδεδεμενοι σε ενα τοπικο δικτυο και να τους παρουσιασει με τη μορφη μιας λιστας ip διευθυνσεων για περαιτερω επεξεργασια η οχι.
Δεν εχω ασχοληθει με 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

Ειδαμε στο προηγουμενο post πως μπορουμε να στησουμε εναν Counter Strike Server . Θα δουμε σημερα ενα bash script για να τον ξεκιναμε, οριζοντας την ip διευθυνση μας , ποσους παικτες το πολυ θα εχουμε και ποια πιστα θα παιξουμε.

#!/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) αλλα με λιγες ωρες για καψιμο και συνδεση στο ιντερνετ γινονται πολλα.
Αν εχετε καποιο σχολιο για βελτιωση η συμπληρωση μοιραστειτε τα μαζι μου!