RSS

Category Archives: Eφαρμογες / Scripts

Εφαρμογες και scripts που εχω δημιουργησει.

Εγκατασταση MAME

    • Αφαιρεση παλιας εκδοσης
      sudo rm -f /etc/apt/sources.list.d/sdlmame4ubuntu.*
    • Προσθετουμε το repository της ανεπισημης εκδοσης
    • sudo add-apt-repository ppa:c.falco/mame
    • Ανανεωνουμε την λιστα
      sudo apt-get update
    • Εγκαθισταμαι το πακετο του MAME
      sudo apt-get install mame
    • Aν θελουμε να προσθεσουμε ενα frontend, μπορουμε να βαλουμε το QMC2, που ειναι πολυ καλο με την παρακατω εντολη
      sudo apt-get install qmc2
 

Eξαγωγη στοιχειων/πληροφοριων απο ιστοσελιδες με bash script

Δυστυχως, αυτο που φοβουνται οι περισσοτεροι, οταν ξεκιναν να ασχολουνται με το Unix/Linux/Ubuntu, ειναι και το πιο δυνατο ατου που εχει… αναφερομαι στο τερματικο. Ειναι δυσκολο, αλλα αν το μαθεις, σου λυνονται τα χερια. Μπορεις να κανεις "περιεργα/τρελα" πραγματα, που δεν τα κανεις ουτε με το καλυτερο γραφικο περιβαλλον. Σε αυτο το tutorial, θα δουμε πως μπορουμε να εξαγουμε στοιχεια απο ιστοσελιδες που μας ενδιαφερουν. Μπορειτε πχ να εξαγετε τον καιρο μιας τοποθεσιας και να σωζετε τις πληροφοριες αυτες σε ενα αρχειο ή να τις εμφανιζετε στο desktop σας… μπορειτε να παρακολουθειτε μετοχες, top ten λιστες απο διαφορα sites και θεματα… και οτι αλλο σκεφτειτε.

Εδω, για λογους συντομιας και απλοτητας, θα φτιαξουμε ενα script το οποιο θα περνει απο μια ιστοσελιδα πληροφοριες για το ζωδιο μας. Η λογικη ειναι πανω-κατω ιδια και για αλλες περιπτωσεις, οποτε αν το θεμα σας φενεται αστειο, μην σταματησετε να διαβαζετε.

Καταρχας βρισκουμε την ιστοσελιδα που ενδιαφερει και ανοιγουμε να δουμε τον πηγαιο κωδικα της (source code). Aυτο στο firefox γινεται, πατωντας Control + U. Aφου ανοιξει το παραθυρο με τον κωδικα, τον κοιταμε προσεκτικα και ψαχνουμε να βρουμε καποιο κομματι κειμενου ή κωδικα που ειναι μοναδικο στην ιστοσελιδα και ειναι ακριβως διπλα στο κειμενο που θελουμε να εξαγουμε. Θελουμε δηλαδη να βρουμε κατι χαρακτηριστικο που να δηλωνει που ειναι το κειμενο που ψαχνουμε. Η ιστοσελιδα που θα παρουμε τα στοιχεια μας ειναι η: http://www.psychicguild.com/Daily-Horoscope/Scorpio. Ανοιξτε τον κωδικα της και θα δειτε οτι διπλα στις πληροφοριες που θελουμε να παρουμε, εχει ενα ξεχωριστο κομματι κωδικα που ειναι μοναδικος σε ολη την σελιδα: <div id="now2" style="">

Οποτε, καταρχας πρεπει να αποθηκευσουμε την σελιδα, τοπικα, στον υπολογιστη μας. Αυτο το κανουμε δινοντας την εντολη wget ετσι:

wget -O scorpio.txt http://www.psychicguild.com/Daily-Horoscope/Scorpio

Οπου scorpio.txt το ονομα του αρχειου που θελουμε να αποθηκευσουμε την σελιδα και μετα βαζουμε και την διευθυνση της ιστοσελιδας. Περιμενουμε και βλεπουμε οτι ο υπολογιστης σωζει την συγκεκριμενη ιστοσελιδα.

Για να εξαγουμε το κομματι με τις πληροφοριες, χρησιμοποιουμε την εντολη grep. Με την εντολη αυτη βρισκουμε ενα κομματι κειμενου μεσα σε ενα αρχειο. Οποτε για να εξαγουμε τις πληροφοριες μας δινουμε:

grep '<div id="now2" style="">' scorpio.txt

Αυτο θα μας τυπωσει ολη την σειρα κειμενου, μαζι με τον κωδικα HTML. Εμεις ομως θελουμε μονο το κειμενο, χωρις τον κωδικα HTML. Oποτε πρεπει να τον αφαιρεσουμε. Για να γινει αυτο, χρησιμοποιουμε την εντολη sed. H εντολη sed, αντικαθιστα ενα κομματι κειμενου, με ενα αλλο που θελουμε. Εμεις εδω θελουμε να αφαιρεσουμε τα HTML codes, τα οποια ολα, ξεκινανε και τελειωνουν με τους χαρακτηρες < και >. Ετσι θα χρησιμοποιησουμε την εντολη sed με ενα regular expression, το οποιο βρισκει τα HTML tags και θα τα αφαιρεσουμε. Δινουμε λοιπον την παρακατω εντολη:

sed -e 's/<[a-zA-Z\/][^>]*>//g' scorpio.txt

Στην οθονη θα μας τυπωθει το κειμενο της ιστοσελιδας χωρις τα HTML tags. Αλλα… μας τυπωνει ολη την ιστοσελιδα…και οχι μονο το κομματι που θελουμε. Αυτο γινετε γιατι με την προηγουμενη εντολη (την grep) παρολο που μας τυπωσε στην οθονη το κειμενο που θελαμε, στο αρχειο scorpio.txt δεν εγινε καμμια μεταβολη. Δεν σωσαμε τιποτα, απλα το εμφανισαμε στην οθονη μας. Πως λοιπον τωρα με την εντολη sed θα αντικαταστισουμε τα HTML tags μονο στο κομματι που θελουμε;;; Θα χρησιμοποιησουμε pipes! Tο pipe ειναι, ας πουμε, μια εντολη η οποια περνει την εξοδο μιας εντολης (το κειμενο που εμφανιζει δηλαδη) και το στελνει ως εισαγωγη στην επομενη εντολη.

Για να αντικαταστησουμε τα HTML tags μονο στο κομματι του αρχειου που θελουμε δινουμε την παρακατω εντολη:

grep '<div id="now2" style="">' scorpio.txt | sed -e 's/<[a-zA-Z\/][^>]*>//g'

Τι κανουμε… πρωτα βρισκουμε το σημειο του κειμενου με την εντολη grep και μετα με το pipe (ο χαρακτηρας | ) περναμε την εξοδο της grep σαν εισοδο στην sed. Eτσι τωρα η sed δεν χρειαζετε να τις πουμε το ονομα του αρχειου οπως πριν (sed -e 's/<[a-zA-Z\/][^>]*>//g' scorpio.txt). Ετσι μας δινετε τωρα σαν εξοδο, το κομματι κειμενου που θελουμε, χωρις τα HTML tags.

Oμως, δεν τελειωσαμε. Αν παρατηρησετε, στο κειμενο εμφανιζονται και κατι ειδικοι χαρακτηρες και πολλα κενα (&#8217,&#8211 κτλ). Δεν ειναι ωραια να τα βλεπουμε… οποτε θα τα αφαιρεσουμε και παλι με την εντολη sed. Oποτε δινουμε:

grep '<div id="now2" style="">' scorpio.txt | sed -e 's/<[a-zA-Z\/][^>]*>//g' | sed -e 's/’//g' | sed -e 's/–//g'

Oπως βλεπετε, συνεχιζουμε και προσθετουμε pipes, μεχρι να φτασουμε το τελικο κειμενο στην μορφη που θελουμε. Ενα τελευταιο βημα που θα κανουμε, ειναι να αφαιρεσουμε το κενο που εχει στην αρχη το κειμενο μας, το οποιο ειναι απλα tabs. Aυτο γινετε με την εντολη sed ‘s/[\t]//g’ οποτε η τελικη μας εντολη θα γινει ετσι:

grep '<div id="now2" style="">' scorpio.txt | sed -e 's/<[a-zA-Z\/][^>]*>//g' | sed -e 's/’//g' | sed -e 's/–//g' | sed 's/[\t]//g'

Αν θελουμε να το σωσουμε σε ενα αρχειο, θα δωσουμε την παραπανω εντολη προσθετωντας το συμβολο > με το ονομα του αρχειου που θελουμε να σωθει καπως ετσι:

grep '<div id="now2" style="">' scorpio.txt | sed -e 's/<[a-zA-Z\/][^>]*>//g' | sed -e 's/’//g' | sed -e 's/–//g' > scorpios.txt

Αν θελουμε να το κανουμε ολο αυτο, ενα script θα γινει ετσι:

#!/bin/sh

wget -O scorpio.txt http://www.psychicguild.com/Daily-Horoscope/Scorpio

grep '<div id="now2" style="">' scorpio.txt | sed -e 's/<[a-zA-Z\/][^>]*>//g' | sed -e 's/’//g' | sed -e 's/–//g' > scorpios.txt

H βασικη αρχη και σκεψη ειναι ιδια παντου. Καθε ιστοσελιδα εχει διαφορετικη δομη, οποτε πρεπει να αλλαξετε τις εντολες αναλογα. Τα βασικα εργαλεια ειναι οι εντολες wget, sed και grep. Αλλα δεν ειναι μονο αυτες. Οσο ψαχνετε τις εντολες του τερματικου, τοσο θα τελειοποιητε τον κωδικα σας και τις ικανοτητες σας. Μπορειτε να βρειτε scripts απο το Internet και να διαβασετε τον κωδικα τους για να δειτε και αλλα παραδειγματα.

 

Ετικέτες: , , , , , ,

Σωστε τo theme που χρησιμοποιειτε σε ενα αρχειο με δυνατοτητα επαναφορας

Εχετε σεταρει τον υπολογιστη σας, τον εχετε φερει στα μετρα σας, εχετε βρει το theme που σας αρεσει, εχετε βαλει την αγαπημενη σας φωτογραφια στο desktop, το theme του GTK ειναι το αγαπημενο σας…. αλλα καθε φορα που κανετε αναβαθμιση, πρεπει να τα σεταρετε απο την αρχη ενα-ενα.

Με το παρακατω script, σωζετε ολα τα παραπανω σε ενα συμπιεσμενο αρχειο, το οποιο φυλαται… ή το στελνετε σε καποιον που θελετε να σεταρει το συστημα του οπως εσεις. Οταν χρειαστει να επαναφερετε το συστημα, αποσυμπιεζετε το αρχειο και μεσα υπαρχει ενα αλλο script το οποιο εκτελειτε. Αυτο ηταν ;)

To script ειναι απο την ιστοσελιδα: http://ubuntu.online02.com/pts

 

Ετικέτες: ,

Ασυγχρονος ελεγχος υπολογιστη με email

Με το project αυτο, θα μπορουμε να ελεγχουμε τον υπολογιστη μας, οπως θελουμε, μεσω ενος αλλου υπολογιστη ή κινητου τηλεφωνου. Το τι θα θελουμε να κανει, εξαρταται απλως απο την φαντασια μας.

Θα χρειαστουμε:

  • Ενα υπολογιστη και τον οποιο θα ελεγχουμε.
  • Εναν αλλο υπολογιστη η κινητο τηλεφωνο απο το οποιο θα στελνουμε τις εντολες
  • Δυο email accounts στο gmail, οπου το ενα θα ειναι αυτο που θα στελνουμε τις εντολες και το αλλο αυτο που θα λαμβανουμε τις απαντησεις. Αυτο που θα λαμβανουμε τις απαντησεις, μπορει να ειναι το κανονικο σας email που χρησιμοποιειτε καθημερινα, οποτε θα χρειαστει να φτιαξετε ενα αλλο στο οποιο θα "ακουει" ο υπολογιστης τις εντολες σας.
  • Θα χρειαστει να εγκαταστησουμε και καποια πακετα. Εχω φτιαξει ενα αρχειο το οποιο κανει εγκατασταση ολα τα βασικα πακετα που χρειαζονται. Επισης σε αυτο το αρχειο, εφοσον εμπλουτισετε το script αυτο, μπορειτε να βαλετε και δικα σας πακετα που χρειαζεστε.
  • Eννοειτε συνδεση Internet και στους δυο υπολογιστες

Στον υπολογιστη που θα εκτελει τις εντολες μας κανουμε τα εξεις:

Αποσυμπιεζετε το αρχειο σε ενα φακελο που θελετε και φτιαχνετε ενα cron job ωστε να εκτελειτε το αρχειο checkgmail.sh οσο συχνα θελετε εσεις.

Ανοιξτε το αρχειο checkgmail.sh και αλλαξτε στην γραμμη valid_mail το κειμενο που εμφανιζετε ως περιγραφη στο email που θα στελνετε τις εντολες. Στην γραμμη

curl --silent "https://user:password@mail.google.com/mail/feed/atom&quot; |

αλλαξτε το user και password με τα αντιστοιχα που εχει το email που θα στελνετε τις εντολες. Αποθηκευστε τα. Στο αρχειο list.txt περιγραφονται οι εντολες που υποστηριζονται και μπορειτε να το ενημερωνετε και να το εμφανιζετε σαν help file οταν ξεχνατε καποια εντολη. Τα υπολοιπα scripts που υπαρχουν μεσα στο φακελο ειναι αυτα που εκτελουν τις εντολες. Μεσα στο καθενα απο αυτα πρεπει να ορισετε το email που θα στελνετε η απαντηση (ειτε ειναι αρχειο, ειτε κειμενο) και το password και username του email account που "ακουει" ο υπολογιστης.

Εκτελεστε το αρχειο install.sh για να εγκατασταθουν τα απαραιτητα πακετα.

Στον υπολογιστη/κινητο που θα στελνουμε τις εντολες κανουμε τα εξεις:

Ανοιγουμε τον email client και στελνουμε ενα email στην διευθυνση που "ακουει" ο υπολογιστης, βαζοντας σαν θεμα του μηνυματος την εντολη που θελουμε. Η εντολη μπορει να ειναι οποιαδηποτε εντολη του ubuntu η οποια δεν πρεπει να περιεχει ειδικους χαρακτηρες οπως <>| κτλ. ή το ονομα ενος bash script, το οποιο πρεπει να υπαρχει στον φακελο που εγκαταστησαμε το project. Στελνετε το email, χωρις κειμενο και περιμενετε την απαντηση απο τον υπολογιστη σας. ;)

Μερικα παραδειγματα εντολων

  • screenshot == Περνει ενα screenshot του desktop του υπολογιστη και τον αποστελει.
  • html2pdf <webpage> == Αποστελει μια ιστοσελιδα σε μορφη pdf
  • sendfile <filename> == Αποστελει ενα αρχειο
  • youtube <video_code> == Αποθηκευει ενα video απο το youtube, συμπιζει το αρχειο για προβολη σε κινητο και το αποστελει
  • list == Αποστελει την λιστα με τις διαθεσιμες εντολες
  • streamcam == Καταγραφει ενα βιντεο κλιπ 30 δευτερολεπτων απο την webcam και το αποστελει
 

Ετικέτες: ,

Google Apps απο το τερματικο

Παρακατω θα βρειτε μερικα scripts ωστε να μπορειτε να χρησιμοποιητε μερικα απο τα Google Apps, μεσα απο το τερματικο. Για να τα χρησιμοποιησετε, ανοιξτε το αρχειο .bashrc που βρισκεται στον φακελο Home. Καντε paste τα παρακατω, στο τελος του αρχειου και αποθηκευστε. Αν ανοιξετε ενα νεο τερματικο, θα μπορειτε να δωσετε τις εντολες αυτες.

###### detect language of a string
function detectlanguage() { curl -s "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=$@&quot; | sed 's/{"responseData": {"language":"\([^"]*\)".*/\1\n/'; }

###### find a location's coordinates # usage: findlocation "Las Vegas, Nevada" = coordinates: [ -115.1728160, 36.1146460, 0 ] function findlocation() { place=`echo $1 | sed 's/ /%20/g'` ; curl -s "http://maps.google.com/maps/geo?output=json&oe=utf-8&q=$place&quot; | grep -e "address" -e "coordinates" | sed -e 's/^ *//' -e 's/"//g' -e 's/address/Full Address/';}
###### Google search (example: google dog)
function google() {
firefox "http://www.google.com/search?&num=100&q=${@}" &
}

###### translate a word using Google
# usage: translate <phrase> <output-language>
# example: translate "hello" es = hola (will auto-detect source language)
# for a list of language codes: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
function translate() { wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=%7C${2:-en}" | sed 's/.*{"translatedText":"\([^"]*\)".*/\1\n/'; }

###### convert currencies
# usage: currency_convert 1 usd eur
# for currency shorthand: http://www.xe.com/currency/
function currency_convert() { wget -qO- "http://www.google.com/finance/converter?a=$1&from=$2&to=$3&hl=es&quot; | sed '/res/!d;s/<[^>]*>//g'; }

 

Ετικέτες: , , , ,

Απενεργοποιηστε το Compiz οταν πεζεται παιχνιδια

Πολλα παιχνιδια για το Linux εχουν προβλημα οταν χρησιμοποιηται ταυτοχρονα το Compiz και χρειαζεται να το απενεργοποιηται πρωτα. Η διαδικασια μπορει να γινει ειτε απο το τερματικο, ειτε με το Compiz Fusion. Και οι δυο τροποι ομως ειναι χρονοβοροι και κουραστικοι. Οποτε ας δοκιμασουμε τον παρακατω πιο ευχρηστο τροπο.

Ανοιγουμε το τερματικο, και δινουμε την παρακατω εντολη:

sudo touch /usr/bin/game && sudo chmod +x /usr/bin/game

Με την εντολη αυτη δημιουργουμε ενα αρχειο με ονομα game στο καταλογο /usr/bin. Το αρχειο αυτο, θα πρεπει να το ανοιξουμε με την εντολη:

sudo gedit /usr/bin/game

και να κανουμε paste τα παρακατω:

#!/bin/bash
COMP="false";
if ps -A | grep compiz > /dev/null ; then
echo "Warning: Compiz Detected!!!"
metacity --replace > /dev/null &
COMP="true"
fi
echo "Starting"
$1
echo "Finish"
if $COMP ; then
echo "Warning: Starting Compiz!!!"
compiz --replace > /dev/null &
fi
exit

Σωζετε και κλεινετε το αρχειο. Τωρα θα κανετε edit το shortcut του παιχνιδιου που θελετε απο το κεντρικο menu και στην εντολη του θα προσθεσετε το ονομα του αρχειου που φτιαξαμε.

Παραδειγμα:

Αν η εντολη του παιχνιδιου ειναι wesnoth εσεις θα την κανετε game wesnoth. Oποτε, οταν θα ξεκινατε το παιχνιδι, θα ανοιχνευεται το compiz, θα το κλεινει, θα εκκινειτε το παιχνιδι και οταν τελειωσει το παιχνιδι, θα ξανα-εκκινει το compiz.

 

Ετικέτες: , ,

Αλλαγη Wallpaper με ενα/μια κλικ/εντολη

Για να αλλαξετε ευκολα και γρηγορα ενα wallpaper χρησιμοποιηστε τον εξεις τροπο. Πηγαινετε στο menu, System > Preferences > Keyboard Shortcuts και δημιουργηστε ενα νεο shortcut. Oνομαστε το οπως θελετε και σαν εντολη βαλτε την παρακατω:

bash -c 'gconftool-2 -t str -s /desktop/gnome/background/picture_filename "$(find ~/Pictures/ -type f | shuf -n1)"'

Με την εντολη αυτη θα μπαινει ως wallpaper μια τυχαια εικονα απο τον καταλογο Pictures στο Home directory σας. Μπορειτε να τον αλλαξετε αν θελετε.

 

Ετικέτες: , , ,

 
Follow

Get every new post delivered to your Inbox.